3#ifndef QV4INTERNALCLASS_H
4#define QV4INTERNALCLASS_H
21#include <private/qv4propertykey_p.h>
22#include <private/qv4heap_p.h>
38struct PropertyHashData;
152 NumAttributesInPointer = SizeOfAttributesPointer / SizeOfAttributes,
155 static_assert(NumAttributesInPointer > 0);
158 return m_alloc > NumAttributesInPointer ?
m_data[
i] : m_inlineData[
i];
162 if (m_alloc > NumAttributesInPointer)
185 void setSize(
uint s);
195 Heap::MemberData *
data;
225 if (pos < d->
size()) {
234 if (
pos ==
d->alloc())
236 if (
pos >=
d->alloc()) {
239 d->setSize(
d->size() + 1);
246 if (
d->refcount > 1) {
360 if (
e &&
e->index <
size) {
363 return {
e->index,
e->setterIndex,
a };
380 if (
e &&
e->index <
size) {
383 return {
e->index,
a };
394 if (
e &&
e->index <
size) {
397 if (
a.isAccessor()) {
399 return {
e->setterIndex,
a };
401 return {
e->index,
a };
413 if (
e &&
e->index <
size) {
426 if (
e &&
e->index <
size) {
445 return changeVTableImpl(vt);
450 return changePrototypeImpl(proto);
459 Q_QML_EXPORT
InternalClass *changePrototypeImpl(Heap::Object *proto);
463 friend struct ::QV4::ExecutionEngine;
469 b->internalClass->mark(stack);
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
\qmltype Particle \inqmlmodule QtQuick.Particles
#define Q_REQUIRED_RESULT
static int grow(QLayoutStruct &ls, int delta)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
QFuture< QSet< QChar > > set
[10]
mimeData setData("text/csv", csvData)
static void markObjects(Base *, MarkStack *)
Q_REQUIRED_RESULT InternalClass * locked()
Q_REQUIRED_RESULT InternalClass * cryopreserved()
IndexAndAttribute findValueOrSetter(const PropertyKey id)
static void addMember(QV4::Object *object, PropertyKey id, PropertyAttributes data, InternalClassEntry *entry)
Q_REQUIRED_RESULT InternalClass * sealed()
InternalClassEntry find(const PropertyKey id)
bool verifyIndex(const PropertyKey id, uint index)
PropertyHash propertyTable
SharedInternalClassData< PropertyKey > nameMap
Q_REQUIRED_RESULT InternalClass * nonExtensible()
bool isUsedAsProto() const
IndexAndAttribute findValueOrGetter(const PropertyKey id)
Q_REQUIRED_RESULT InternalClass * changePrototype(Heap::Object *proto)
Q_REQUIRED_RESULT InternalClass * frozen()
Q_REQUIRED_RESULT InternalClass * canned()
Q_REQUIRED_RESULT InternalClass * changeVTable(const VTable *vt)
bool isImplicitlyFrozen() const
quint8 numRedundantTransitions
InternalClassTransition Transition
Q_REQUIRED_RESULT InternalClass * asProtoClass()
bool isExtensible() const
Q_REQUIRED_RESULT InternalClass * changeMember(PropertyKey identifier, PropertyAttributes data, InternalClassEntry *entry=nullptr)
uint indexOfValueOrGetter(const PropertyKey id)
Q_QML_PRIVATE_EXPORT QString keyAt(uint index) const
std::vector< Transition > transitions
InternalClassTransition & lookupOrInsertTransition(const InternalClassTransition &t)
static void markObjects(Heap::Base *ic, MarkStack *stack)
static void removeMember(QV4::Object *object, PropertyKey identifier)
void updateProtoUsage(Heap::Object *o)
@ MaxRedundantTransitions
PropertyHash::Entry * findEntry(const PropertyKey id)
SharedInternalClassData< PropertyAttributes > propertyData
PropertyAttributes attributes
Heap::InternalClass * lookup
bool operator<(const InternalClassTransition &other) const
bool operator==(const InternalClassTransition &other) const
PropertyHash::Entry * entries
void addEntry(const Entry &entry, int classSize)
PropertyHash & operator=(const PropertyHash &other)
void detach(bool grow, int classSize)
Entry * lookup(PropertyKey identifier) const
PropertyAttributes at(uint i) const
PropertyAttributes * m_data
void set(uint i, PropertyAttributes t)
SharedInternalClassDataPrivate(ExecutionEngine *engine)
SharedInternalClassDataPrivate(const SharedInternalClassDataPrivate &other, uint pos, PropertyKey value)
~SharedInternalClassDataPrivate()
SharedInternalClassDataPrivate(ExecutionEngine *e)
SharedInternalClassDataPrivate(const SharedInternalClassDataPrivate &other)
void set(uint pos, T value)
SharedInternalClassData(ExecutionEngine *e)
void add(uint pos, T value)
SharedInternalClassData & operator=(const SharedInternalClassData &other)
SharedInternalClassDataPrivate< T > Private
~SharedInternalClassData()
SharedInternalClassData(const SharedInternalClassData &other)