![]() |
Qt 6.x
The Qt SDK
|
#include <qv4internalclass_p.h>
Classes | |
struct | IndexAndAttribute |
Public Types | |
enum | Flag { NotExtensible = 1 << 0 , Sealed = 1 << 1 , Frozen = 1 << 2 , UsedAsProto = 1 << 3 , Locked = 1 << 4 } |
enum | { MaxRedundantTransitions = 255 } |
typedef InternalClassTransition | Transition |
Static Public Member Functions | |
static void | addMember (QV4::Object *object, PropertyKey id, PropertyAttributes data, InternalClassEntry *entry) |
static void | changeMember (QV4::Object *object, PropertyKey id, PropertyAttributes data, InternalClassEntry *entry=nullptr) |
static void | removeMember (QV4::Object *object, PropertyKey identifier) |
static void | markObjects (Heap::Base *ic, MarkStack *stack) |
![]() | |
static void | markObjects (Base *, MarkStack *) |
Public Attributes | |
ExecutionEngine * | engine |
const VTable * | vtable |
quintptr | protoId |
Heap::Object * | prototype |
InternalClass * | parent |
PropertyHash | propertyTable |
SharedInternalClassData< PropertyKey > | nameMap |
SharedInternalClassData< PropertyAttributes > | propertyData |
std::vector< Transition > | transitions |
uint | size |
quint8 | numRedundantTransitions |
quint8 | flags |
![]() | |
Pointer< InternalClass *, 0 > | internalClass |
Friends | |
struct | ::QV4::ExecutionEngine |
Definition at line 297 of file qv4internalclass_p.h.
Definition at line 317 of file qv4internalclass_p.h.
anonymous enum |
Enumerator | |
---|---|
MaxRedundantTransitions |
Definition at line 305 of file qv4internalclass_p.h.
Enumerator | |
---|---|
NotExtensible | |
Sealed | |
Frozen | |
UsedAsProto | |
Locked |
Definition at line 298 of file qv4internalclass_p.h.
Heap::InternalClass * QV4::Heap::InternalClass::addMember | ( | PropertyKey | identifier, |
PropertyAttributes | data, | ||
InternalClassEntry * | entry = nullptr |
||
) |
Definition at line 553 of file qv4internalclass.cpp.
References changeMember(), e, findEntry(), QV4::PropertyKey::isStringOrSymbol(), and Q_ASSERT.
|
static |
Definition at line 538 of file qv4internalclass.cpp.
References changeMember(), e, QV4::Heap::Base::internalClass, and Q_ASSERT.
Referenced by QV4::ExecutionEngine::ExecutionEngine(), QV4::Object::insertMember(), and QV4::Function::updateInternalClass().
Heap::InternalClass * QV4::Heap::InternalClass::asProtoClass | ( | ) |
Definition at line 724 of file qv4internalclass.cpp.
References engine, flags, QV4::PropertyKey::invalid(), isUsedAsProto(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), QV4::InternalClassTransition::ProtoClass, Q_ASSERT, and UsedAsProto.
InternalClass * QV4::Heap::InternalClass::canned | ( | ) |
Definition at line 692 of file qv4internalclass.cpp.
References engine, and sealed().
Heap::InternalClass * QV4::Heap::InternalClass::changeMember | ( | PropertyKey | identifier, |
PropertyAttributes | data, | ||
InternalClassEntry * | entry = nullptr |
||
) |
Definition at line 411 of file qv4internalclass.cpp.
References QV4::Heap::addDummyEntry(), QV4::Heap::cleanInternalClass(), e, engine, findEntry(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), propertyData, Q_ASSERT, and size.
Referenced by addMember(), addMember(), changeMember(), removeMember(), and QV4::ArrayObject::virtualDefineOwnProperty().
|
static |
Definition at line 288 of file qv4internalclass.cpp.
References changeMember(), QV4::Heap::Base::internalClass, and Q_ASSERT.
|
inline |
Definition at line 447 of file qv4internalclass_p.h.
References prototype.
Referenced by QV4::ExecutionEngine::ExecutionEngine(), QV4::StringPrototype::init(), and QV4::Object::virtualSetPrototypeOf().
|
inline |
Definition at line 442 of file qv4internalclass_p.h.
References vtable.
Referenced by QV4::ExecutionEngine::ExecutionEngine().
InternalClass * QV4::Heap::InternalClass::cryopreserved | ( | ) |
Definition at line 700 of file qv4internalclass.cpp.
References engine, and frozen().
void QV4::Heap::InternalClass::destroy | ( | ) |
Definition at line 261 of file qv4internalclass.cpp.
References QV4::PropertyHash::~PropertyHash(), QV4::Heap::Base::destroy(), engine, QV4::Heap::Base::isMarked(), nameMap, parent, propertyData, propertyTable, Q_ASSERT, and transitions.
|
inline |
Definition at line 355 of file qv4internalclass_p.h.
References QV4::Attr_Invalid, e, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
|
inline |
Definition at line 344 of file qv4internalclass_p.h.
References e, QV4::PropertyHash::lookup(), propertyTable, and Q_ASSERT.
Referenced by addMember(), changeMember(), and removeMember().
|
inline |
Definition at line 375 of file qv4internalclass_p.h.
References QV4::Attr_Invalid, e, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
|
inline |
Definition at line 389 of file qv4internalclass_p.h.
References QV4::Attr_Invalid, e, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
Heap::InternalClass * QV4::Heap::InternalClass::frozen | ( | ) |
Definition at line 660 of file qv4internalclass.cpp.
References attrs, engine, QV4::InternalClassTransition::Frozen, Frozen, i, QV4::PropertyKey::invalid(), isFrozen(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), propertyData, Q_ASSERT, and size.
Referenced by cryopreserved().
|
inline |
Definition at line 408 of file qv4internalclass_p.h.
References e, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
void QV4::Heap::InternalClass::init | ( | ExecutionEngine * | engine | ) |
Definition at line 217 of file qv4internalclass.cpp.
References engine, QV4::Heap::Base::init(), QV4::Heap::Base::internalClass, nameMap, QV4::ExecutionEngine::newProtoId(), propertyData, propertyTable, protoId, transitions, and vtable.
Referenced by QV4::ExecutionEngine::ExecutionEngine(), and QV4::ExecutionEngine::newClass().
void QV4::Heap::InternalClass::init | ( | Heap::InternalClass * | other | ) |
Definition at line 241 of file qv4internalclass.cpp.
References engine, QV4::Heap::Base::init(), QV4::Heap::Base::internalClass, nameMap, QV4::ExecutionEngine::newProtoId(), numRedundantTransitions, other(), parent, propertyData, propertyTable, protoId, prototype, transitions, and vtable.
|
inline |
Definition at line 325 of file qv4internalclass_p.h.
References NotExtensible.
Referenced by nonExtensible(), and QV4::Object::virtualSetPrototypeOf().
|
inline |
Definition at line 327 of file qv4internalclass_p.h.
References Frozen.
Referenced by freeze_recursive(), frozen(), isImplicitlyFrozen(), sealed(), and QV4::QObjectWrapper::virtualPut().
bool QV4::Heap::InternalClass::isImplicitlyFrozen | ( | ) | const |
Definition at line 708 of file qv4internalclass.cpp.
References attrs, i, isFrozen(), propertyData, and size.
|
inline |
Definition at line 329 of file qv4internalclass_p.h.
References Locked.
Referenced by locked(), QV4::ExecutionEngine::lockObject(), and QV4::Object::virtualSetPrototypeOf().
|
inline |
Definition at line 326 of file qv4internalclass_p.h.
References Sealed.
Referenced by sealed().
|
inline |
Definition at line 328 of file qv4internalclass_p.h.
References UsedAsProto.
Referenced by asProtoClass(), and updateProtoUsage().
Definition at line 283 of file qv4internalclass.cpp.
References nameMap.
Referenced by QV4DataCollector::collectScope(), and QV4::Module::virtualOwnPropertyKeys().
InternalClass * QV4::Heap::InternalClass::locked | ( | ) |
Definition at line 520 of file qv4internalclass.cpp.
References engine, flags, QV4::PropertyKey::invalid(), isLocked(), QV4::InternalClassTransition::Locked, Locked, lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), and Q_ASSERT.
InternalClassTransition & QV4::Heap::InternalClass::lookupOrInsertTransition | ( | const InternalClassTransition & | t | ) |
Definition at line 297 of file qv4internalclass.cpp.
References it, and transitions.
Referenced by asProtoClass(), changeMember(), frozen(), locked(), nonExtensible(), and sealed().
|
static |
Definition at line 762 of file qv4internalclass.cpp.
References QV4::Heap::Base::mark(), nameMap, parent, and prototype.
Heap::InternalClass * QV4::Heap::InternalClass::nonExtensible | ( | ) |
Definition at line 502 of file qv4internalclass.cpp.
References engine, flags, QV4::PropertyKey::invalid(), isExtensible(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), QV4::InternalClassTransition::NotExtensible, NotExtensible, and Q_ASSERT.
|
static |
Definition at line 611 of file qv4internalclass.cpp.
References QV4::Attr_Invalid, changeMember(), findEntry(), QV4::Heap::Base::internalClass, Q_ASSERT, and size.
Heap::InternalClass * QV4::Heap::InternalClass::sealed | ( | ) |
Definition at line 628 of file qv4internalclass.cpp.
References attrs, engine, i, QV4::PropertyKey::invalid(), isFrozen(), isSealed(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), propertyData, Q_ASSERT, QV4::InternalClassTransition::Sealed, Sealed, and size.
Referenced by canned().
void QV4::Heap::InternalClass::updateProtoUsage | ( | Heap::Object * | o | ) |
Definition at line 753 of file qv4internalclass.cpp.
References QV4::EngineBase::Class_Empty, engine, QV4::EngineBase::internalClasses(), isUsedAsProto(), o, prototype, Q_ASSERT, and QV4::Heap::updateProtoUsage().
|
inline |
Definition at line 421 of file qv4internalclass_p.h.
References e, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
|
friend |
Definition at line 463 of file qv4internalclass_p.h.
ExecutionEngine* QV4::Heap::InternalClass::engine |
Definition at line 307 of file qv4internalclass_p.h.
Referenced by asProtoClass(), canned(), changeMember(), QV4::Heap::cleanInternalClass(), cryopreserved(), destroy(), frozen(), QV4::Heap::Atomics::init(), QV4::Heap::JsonObject::init(), QV4::Heap::MathObject::init(), QV4::Heap::Reflect::init(), QV4::Heap::NodePrototype::init(), QV4::Heap::QQuickJSContext2DPixelData::init(), QV4::Heap::ArrayObject::init(), QV4::Heap::ProxyFunctionObject::init(), init(), init(), instanceOfQObject(), locked(), QV4::FunctionObject::name(), nonExtensible(), QV4::Object::putValue(), QV4::Heap::VariantObject::removeVmePropertyReference(), sealed(), QV4::ArrayObject::toQStringList(), updateProtoUsage(), QV4::Heap::updateProtoUsage(), and QV4::Object::virtualInstanceOf().
quint8 QV4::Heap::InternalClass::flags |
Definition at line 323 of file qv4internalclass_p.h.
Referenced by asProtoClass(), locked(), and nonExtensible().
SharedInternalClassData<PropertyKey> QV4::Heap::InternalClass::nameMap |
Definition at line 314 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), destroy(), freeze_recursive(), init(), init(), QV4::ExecutionEngine::initializeGlobal(), keyAt(), and markObjects().
quint8 QV4::Heap::InternalClass::numRedundantTransitions |
Definition at line 322 of file qv4internalclass_p.h.
Referenced by QV4::Heap::cleanInternalClass(), and init().
InternalClass* QV4::Heap::InternalClass::parent |
Definition at line 311 of file qv4internalclass_p.h.
Referenced by QV4::Heap::cleanInternalClass(), destroy(), init(), and markObjects().
SharedInternalClassData<PropertyAttributes> QV4::Heap::InternalClass::propertyData |
Definition at line 315 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), changeMember(), destroy(), find(), findValueOrGetter(), findValueOrSetter(), frozen(), indexOfValueOrGetter(), init(), init(), isImplicitlyFrozen(), sealed(), and verifyIndex().
PropertyHash QV4::Heap::InternalClass::propertyTable |
Definition at line 313 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), destroy(), find(), findEntry(), findValueOrGetter(), findValueOrSetter(), indexOfValueOrGetter(), init(), init(), and verifyIndex().
quintptr QV4::Heap::InternalClass::protoId |
Definition at line 309 of file qv4internalclass_p.h.
Referenced by init(), init(), and QV4::Heap::updateProtoUsage().
Heap::Object* QV4::Heap::InternalClass::prototype |
Definition at line 310 of file qv4internalclass_p.h.
Referenced by changePrototype(), init(), markObjects(), updateProtoUsage(), QV4::Heap::updateProtoUsage(), and QV4::Object::virtualSetPrototypeOf().
uint QV4::Heap::InternalClass::size |
Definition at line 321 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), QV4::MemoryManager::allocateObject(), changeMember(), QV4DataCollector::collectScope(), freeze_recursive(), frozen(), isImplicitlyFrozen(), QV4::ExecutionContext::newBlockContext(), removeMember(), sealed(), and QV4::Module::virtualOwnPropertyKeys().
std::vector<Transition> QV4::Heap::InternalClass::transitions |
Definition at line 318 of file qv4internalclass_p.h.
Referenced by destroy(), init(), init(), lookupOrInsertTransition(), and QV4::Heap::updateProtoUsage().
const VTable* QV4::Heap::InternalClass::vtable |
Definition at line 308 of file qv4internalclass_p.h.
Referenced by QV4::MemoryManager::allocManaged(), changeVTable(), init(), and init().