22 this->handler.
set(
e, handler->d());
28 FunctionObject::init(
e->rootContext());
30 this->handler.
set(
e, handler->d());
32 if (!
target->isConstructor())
33 jsConstruct =
nullptr;
51 return target->get(
id, receiver, hasProperty);
126 if (!
o->d()->handler)
137 return target->deleteProperty(
id);
163 if (!
o->d()->handler)
174 return target->hasProperty(
id);
202 if (!
o->d()->handler) {
215 return target->getOwnProperty(
id,
p);
253 resultDesc->
completed(&resultAttributes);
255 if (!targetDesc->
isCompatible(targetAttributes, resultDesc, resultAttributes)) {
268 p->value = resultDesc->
value;
269 p->set = resultDesc->
set;
271 return resultAttributes;
278 if (!
o->d()->handler) {
310 bool extensibleTarget =
target->isExtensible();
311 bool settingConfigFalse =
attrs.hasConfigurable() && !
attrs.isConfigurable();
313 if (!extensibleTarget || settingConfigFalse) {
335 if (!
o->d()->handler)
346 return target->isExtensible();
369 if (!
o->d()->handler)
380 return target->preventExtensions();
403 if (!
o->d()->handler) {
416 return target->getPrototypeOf();
434 if (!
target->isExtensible()) {
435 Heap::Object *targetProto =
target->getPrototypeOf();
436 if (proto != targetProto) {
448 if (!
o->d()->handler) {
461 return target->setPrototypeOf(
p);
476 if (!
target->isExtensible()) {
477 Heap::Object *targetProto =
target->getPrototypeOf();
478 if (
p->d() != targetProto) {
541 if (!
o->d()->handler) {
555 return target->ownPropertyKeys(iteratorTarget);
572 uint len = trapResult->getLength();
576 key = trapResult->get(
i);
584 trapKeys->push_back(keyAsValue);
597 if (
attrs.isConfigurable())
598 targetConfigurableKeys->push_back(keyAsValue);
600 targetNonConfigurableKeys->push_back(keyAsValue);
602 if (
target->isExtensible() && targetNonConfigurableKeys->getLength() == 0) {
603 *iteratorTarget = *
m;
608 uncheckedResultKeys->copyArrayData(trapKeys);
610 len = targetNonConfigurableKeys->getLength();
619 if (
target->isExtensible()) {
620 *iteratorTarget = *
m;
624 len = targetConfigurableKeys->getLength();
633 len = uncheckedResultKeys->getLength();
641 *iteratorTarget = *
m;
650 if (!
o->d()->handler)
651 return scope.engine->throwTypeError();
659 if (
scope.hasException())
663 return target->callAsConstructor(argv, argc, newTarget);
666 return scope.engine->throwTypeError();
676 return scope.engine->throwTypeError();
677 return result->asReturnedValue();
685 if (!
o->d()->handler)
686 return scope.engine->throwTypeError();
694 if (
scope.hasException())
699 return scope.engine->throwTypeError();
706 return trapFunction->call(handler,
arguments, 3);
718 ctor->defineReadonlyConfigurableProperty(scope.engine->id_length(),
Value::fromInt32(2));
724 if (argc < 2 || !argv[0].isObject() || !argv[1].isObject())
728 const Object *handler =
static_cast<const Object *
>(argv + 1);
730 if (!ptarget->d()->handler)
733 if (!phandler->d()->handler)
744 return f->engine()->throwTypeError();
762 o->defineDefaultProperty(
p,
proxy);
763 o->defineDefaultProperty(revoke, revoker);
764 return o->asReturnedValue();
ObjectType::Data * allocate(Args &&... args)
QSet< QString >::iterator it
QList< QVariant > arguments
\qmltype Particle \inqmlmodule QtQuick.Particles
ReturnedValue checkedResult(QV4::ExecutionEngine *v4, ReturnedValue result)
static struct AttrInfo attrs[]
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLsizei const GLfloat * v
[13]
GLboolean GLboolean GLboolean GLboolean a
[7]
#define QStringLiteral(str)
static bool removeAllOccurrences(ArrayObject *target, ReturnedValue val)
#define DEFINE_OBJECT_VTABLE(classname)
PropertyKey next(const Object *o, Property *pd=nullptr, PropertyAttributes *attrs=nullptr) override
ProxyObjectOwnPropertyKeyIterator(ArrayObject *keys)
~ProxyObjectOwnPropertyKeyIterator() override=default
static constexpr ReturnedValue undefined()
static constexpr ReturnedValue null()
MemoryManager * memoryManager
ExecutionContext * rootContext() const
Heap::String * newString(const QString &s=QString())
String * id_length() const
Heap::Object * newObject()
Symbol * symbol_revokableProxy() const
Heap::ArrayObject * newArrayObject(int count=0)
ReturnedValue throwTypeError()
ReturnedValue name() const
ReturnedValue call(const JSCallData &data) const
Heap::ExecutionContext * scope() const
void init(const QV4::FunctionObject *target, const QV4::Object *handler)
Heap::InternalClass * internalClass() const
static void toPropertyDescriptor(ExecutionEngine *engine, const Value &v, Property *desc, PropertyAttributes *attrs)
static ReturnedValue fromPropertyDescriptor(ExecutionEngine *engine, const Property *desc, PropertyAttributes attrs)
bool set(StringOrSymbol *name, const Value &v, ThrowOnFailure shouldThrow)
bool isConfigurable() const
static PropertyKey fromId(quint64 id)
static PropertyKey invalid()
static PropertyKey fromArrayIndex(uint idx)
bool isCompatible(PropertyAttributes &attrs, const Property *other, PropertyAttributes otherAttrs) const
void completed(PropertyAttributes *attrs)
static ReturnedValue method_revocable(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_revoke(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Value * alloc(qint64 nValues) const =delete
bool hasException() const
constexpr ReturnedValue asReturnedValue() const
bool isNullOrUndefined() const
static constexpr VTable::SetPrototypeOf virtualSetPrototypeOf
static constexpr VTable::DefineOwnProperty virtualDefineOwnProperty
static constexpr VTable::OwnPropertyKeys virtualOwnPropertyKeys
static constexpr VTable::GetOwnProperty virtualGetOwnProperty
static constexpr VTable::CallAsConstructor virtualCallAsConstructor
static constexpr VTable::Call virtualCall
static constexpr VTable::PreventExtensions virtualPreventExtensions
static constexpr VTable::GetPrototypeOf virtualGetPrototypeOf
static constexpr VTable::DeleteProperty virtualDeleteProperty
static constexpr VTable::Get virtualGet
static constexpr VTable::HasProperty virtualHasProperty
static constexpr VTable::Put virtualPut
static constexpr VTable::IsExtensible virtualIsExtensible
static constexpr Value fromInt32(int i)
bool isFunctionObject() const
Heap::String * toString(ExecutionEngine *e) const
static constexpr Value undefinedValue()
static constexpr Value fromReturnedValue(ReturnedValue val)
bool sameValue(Value other) const
QML_NEARLY_ALWAYS_INLINE Value::HeapBasePtr heapObject() const
static Value fromUInt32(uint i)