4#include <private/qv4functionobject_p.h>
5#include <private/qv4identifiertable_p.h>
6#include <private/qv4lookup_p.h>
7#include <private/qv4qobjectwrapper_p.h>
8#include <private/qv4runtime_p.h>
9#include <private/qv4stackframe_p.h>
20 if (
index.isValid()) {
38 return object->resolveLookupGetter(
engine,
this);
66 if (
object.isString() &&
name->equals(
engine->id_length())) {
107 return engine->throwReferenceError(
n);
114 if (
const Object *
o =
object.as<Object>())
122 const uint offset1 =
first.objectLookup.offset;
125 auto engine = ic1->engine;
148 if (
const Object *
o =
object.as<Object>()) {
152 memset(&second, 0,
sizeof(
Lookup));
214 qFatal(
"Your C++ compiler is broken.");
226 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
229 return o->memberData->values.data()[l->
objectLookup.offset].asReturnedValue();
238 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
241 return o->inlinePropertyDataWithOffset(l->
objectLookup.offset)->asReturnedValue();
253 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
255 if (l->
protoLookup.protoId ==
o->internalClass->protoId)
265 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
280 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
295 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
313 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
329 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
333 if (!
getter->isFunctionObject())
337 &
object,
nullptr, 0));
351 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
352 if (
o && l->
protoLookup.protoId ==
o->internalClass->protoId) {
354 if (!
getter->isFunctionObject())
358 &
object,
nullptr, 0));
370 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
378 if (!
getter->isFunctionObject())
382 &
object,
nullptr, 0));
391 Object *
o =
object.objectValue();
393 Heap::Object *ho =
o->d();
394 if (ho->arrayData && ho->arrayData->type == Heap::ArrayData::Simple) {
429 qFatal(
"Your C++ compiler is broken.");
476 if (!
getter->isFunctionObject())
480 &
object,
nullptr, 0));
489 if (
const String *
s =
object.as<String>())
490 return Encode(
s->d()->length());
507 if (l->
protoLookup.protoId ==
o->internalClass->protoId)
519 if (l->
protoLookup.protoId ==
o->internalClass->protoId) {
521 if (!
getter->isFunctionObject())
533 return object->resolveLookupSetter(
engine,
this,
value);
538 if (
object.isObject())
541 if (
engine->currentStackFrame->v4Function->isStrict())
557 if (
object.isObject()) {
603 qFatal(
"Your C++ compiler is broken.");
613 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
624 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
635 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
681 qFatal(
"Your C++ compiler is broken.");
692 Q_ASSERT(
object.isObject() &&
static_cast<Object &
>(
object).isArrayObject());
QJSValue globalObject() const
Returns this engine's Global Object.
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
ReturnedValue checkedResult(QV4::ExecutionEngine *v4, ReturnedValue result)
Scoped< String > ScopedString
static struct AttrInfo attrs[]
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLsizei const GLfloat * v
[13]
GLuint GLsizei const GLchar * message
QLatin1StringView QLatin1String
#define QStringLiteral(str)
static void setupObjectLookupTwoClasses(Lookup *l, const Lookup &first, const Lookup &second)
static void setupProtoLookupTwoClasses(Lookup *l, const Lookup &first, const Lookup &second)
const Value * arrayData() const
static constexpr ReturnedValue undefined()
const Value & data(uint index) const
ReturnedValue(* globalGetter)(Lookup *l, ExecutionEngine *engine)
struct QV4::Lookup::@583::@591 protoLookup
ReturnedValue resolvePrimitiveGetter(ExecutionEngine *engine, const Value &object)
static ReturnedValue getter0MemberDatagetter0MemberData(Lookup *l, ExecutionEngine *engine, const Value &object)
void resolveProtoGetter(PropertyKey name, const Heap::Object *proto)
static ReturnedValue primitiveGetterProto(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getter0Inlinegetter0Inline(Lookup *l, ExecutionEngine *engine, const Value &object)
struct QV4::Lookup::@583::@596 insertionLookup
static ReturnedValue stringLengthGetter(Lookup *l, ExecutionEngine *engine, const Value &object)
ReturnedValue resolveGlobalGetter(ExecutionEngine *engine)
struct QV4::Lookup::@583::@593 protoLookupTwoClasses
static bool setter0Inline(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
static ReturnedValue globalGetterProtoAccessor(Lookup *l, ExecutionEngine *engine)
struct QV4::Lookup::@583::@595 primitiveLookup
static ReturnedValue getterQObject(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterQObjectAsVariant(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterProtoAccessor(Lookup *l, ExecutionEngine *engine, const Value &object)
static bool setterQObjectAsVariant(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
struct QV4::Lookup::@583::@590 objectLookup
static bool setterQObject(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
ReturnedValue(* getter)(Lookup *l, ExecutionEngine *engine, const Value &object)
struct QV4::Lookup::@583::@592 objectLookupTwoClasses
static ReturnedValue getter0Inlinegetter0MemberData(Lookup *l, ExecutionEngine *engine, const Value &object)
static bool setterInsert(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
static bool setter0MemberData(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
ReturnedValue resolveGetter(ExecutionEngine *engine, const Object *object)
static ReturnedValue getterGeneric(Lookup *l, ExecutionEngine *engine, const Value &object)
static bool setterGeneric(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
struct QV4::Lookup::@583::@599 qobjectMethodLookup
HeapObjectWrapper< Heap::InternalClass, 0 > ic
static ReturnedValue globalGetterGeneric(Lookup *l, ExecutionEngine *engine)
static ReturnedValue getterTwoClasses(Lookup *l, ExecutionEngine *engine, const Value &object)
static bool arrayLengthSetter(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
static bool setterFallbackAsVariant(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
struct QV4::Lookup::@583::@598 qobjectLookup
bool(* setter)(Lookup *l, ExecutionEngine *engine, Value &object, const Value &v)
static bool setter0setter0(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
bool resolveSetter(ExecutionEngine *engine, Object *object, const Value &value)
static ReturnedValue getterAccessor(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterFallback(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterFallbackAsVariant(Lookup *l, ExecutionEngine *engine, const Value &object)
void releasePropertyCache()
static ReturnedValue getterQObjectMethod(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getter0Inline(Lookup *l, ExecutionEngine *engine, const Value &object)
struct QV4::Lookup::@583::@597 indexedLookup
static ReturnedValue getterProtoTwoClasses(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue primitiveGetterAccessor(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterProto(Lookup *l, ExecutionEngine *engine, const Value &object)
static bool setterFallback(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
static ReturnedValue globalGetterProto(Lookup *l, ExecutionEngine *engine)
HeapObjectWrapper< Heap::Object, 3 > proto
static Q_NEVER_INLINE bool setterTwoClasses(Lookup *l, ExecutionEngine *engine, Value &object, const Value &value)
static ReturnedValue getter0MemberData(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterIndexed(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterProtoAccessorTwoClasses(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue lookupPropertyGetterImpl(Lookup *l, ExecutionEngine *engine, const Value &object, Flags flags, ReversalFunctor revert)
static ReturnedValue lookupMethodGetterImpl(Lookup *l, ExecutionEngine *engine, const Value &object, Flags flags, ReversalFunctor revert)
static Heap::Object * convertToObject(ExecutionEngine *engine, const Value &value)
constexpr ReturnedValue asReturnedValue() const