3#ifndef QV4COMPILEDDATA_P_H
4#define QV4COMPILEDDATA_P_H
19#include <QtCore/qhashfunctions.h>
20#include <QtCore/qstring.h>
21#include <QtCore/qscopeguard.h>
22#include <QtCore/qvector.h>
23#include <QtCore/qstringlist.h>
24#include <QtCore/qhash.h>
25#include <QtCore/qversionnumber.h>
26#include <QtCore/qlocale.h>
28#if QT_CONFIG(temporaryfile)
29#include <QtCore/qsavefile.h>
32#include <private/qendian_p.h>
33#include <private/qv4staticvalue_p.h>
46#define QV4_DATA_STRUCTURE_VERSION 0x3C
71namespace CompiledData {
79template <
typename ItemType,
typename Container, const ItemType *(Container::*IndexedGetter)(
int index) const>
117 return a.m_data.data()==
b.m_data.data();
135static_assert(
sizeof(Location) == 4,
"Location structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
163static_assert(
sizeof(
RegExp) == 4,
"RegExp structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
198static_assert(
sizeof(
Lookup) == 4,
"Lookup structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
218static_assert(
sizeof(JSClassMember) == 4,
"JSClassMember structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
227static_assert(
sizeof(JSClass) == 4,
"JSClass structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
240static_assert (
sizeof (
String) == 4,
"String structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
247static_assert(
sizeof(
CodeOffsetToLineAndStatement) == 12,
"CodeOffsetToLineAndStatement structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
266 return (
a + 7) & ~size_t(7);
269static_assert(
sizeof(
Block) == 12,
"Block structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
331static_assert(
sizeof(ParameterType) == 4,
"ParameterType structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
338static_assert(
sizeof(
Parameter) == 8,
"Parameter structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
388 return reinterpret_cast<const Parameter *
>(
409 const char *
code()
const {
return reinterpret_cast<const char *
>(
this) +
codeOffset; }
412 int nFormals,
int nLocals,
int nLinesAndStatements,
int nInnerfunctions,
424 return (
a + 7) & ~size_t(7);
427static_assert(
sizeof(
Function) == 56,
"Function structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
440static_assert(
sizeof(
Method) == 12,
"Method structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
461 return (
a + 7) & ~size_t(7);
464static_assert(
sizeof(Class) == 24,
"Class structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
478 return (
a + 7) & ~size_t(7);
482 return reinterpret_cast<const quint32_le *
>(
reinterpret_cast<const char *
>(
this + 1));
492static_assert(
sizeof(TemplateObject) == 4,
"Template object structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
502static_assert(
sizeof(
ExportEntry) == 20,
"ExportEntry structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
511static_assert(
sizeof(
ImportEntry) == 16,
"ImportEntry structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
522static_assert(
sizeof(
TranslationData) == 16,
"TranslationData structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
643 for (
int i = 0;
i <
string.size(); ++
i) {
645 switch (
c.unicode()) {
697static_assert(
sizeof(
Binding) == 24,
"Binding structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
706static_assert(
sizeof(
InlineComponent) == 12,
"InlineComponent structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
714static_assert(
sizeof(
EnumValue) == 12,
"EnumValue structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
723 return reinterpret_cast<const EnumValue*
>(
this + 1) + idx;
738static_assert(
sizeof(Enum) == 12,
"Enum structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
748 return reinterpret_cast<const Parameter*
>(
this + 1) + idx;
763static_assert(
sizeof(Signal) == 12,
"Signal structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
819static_assert(
sizeof(
Property) == 12,
"Property structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
825static_assert (
sizeof(
RequiredPropertyExtraData) == 4,
"RequiredPropertyExtraData structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
920static_assert(
sizeof(
Alias) == 20,
"Alias structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1056 return reinterpret_cast<const Enum*
>(
reinterpret_cast<const char*
>(
this) +
offset);
1063 return reinterpret_cast<const Signal*
>(
reinterpret_cast<const char*
>(
this) +
offset);
1127static_assert(
sizeof(
Object) == 84,
"Object structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1151static_assert(
sizeof(Import) == 20,
"Import structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1167 return reinterpret_cast<const Object*
>(
reinterpret_cast<const char*
>(
this) +
offset);
1170static_assert(
sizeof(QmlUnit) == 16,
"QmlUnit structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1190 enum :
unsigned int {
1268#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
1291 return reinterpret_cast<const Function*
>(
reinterpret_cast<const char *
>(
this) +
offset);
1297 return reinterpret_cast<const Class *
>(
reinterpret_cast<const char *
>(
this) +
offset);
1303 return reinterpret_cast<const TemplateObject *
>(
reinterpret_cast<const char *
>(
this) +
offset);
1309 return reinterpret_cast<const Block *
>(
reinterpret_cast<const char *
>(
this) +
offset);
1323 const char *
ptr =
reinterpret_cast<const char *
>(
this) +
offset;
1341static_assert(
sizeof(Unit) == 248,
"Unit structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1362 return *
insert(nameIndex, loc);
1365 template <
typename CompiledObject>
1368 if (
obj->inheritedTypeNameIndex != 0) {
1370 r.needsCreation =
true;
1371 r.errorWhenNotFound =
true;
1374 auto prop =
obj->propertiesBegin();
1375 auto const propEnd =
obj->propertiesEnd();
1376 for ( ; prop != propEnd; ++prop) {
1377 if (!prop->isCommonType()) {
1378 TypeReference &
r = this->
add(prop->commonTypeOrTypeNameIndex(), prop->location);
1379 r.errorWhenNotFound =
true;
1383 auto binding =
obj->bindingsBegin();
1384 auto const bindingEnd =
obj->bindingsEnd();
1385 for ( ; binding != bindingEnd; ++binding) {
1387 this->
add(binding->propertyNameIndex, binding->location);
1390 auto ic =
obj->inlineComponentsBegin();
1391 auto const icEnd =
obj->inlineComponentsEnd();
1392 for (; ic != icEnd; ++ic) {
1393 this->
add(ic->nameIndex, ic->location);
1397 template <
typename Iterator>
1420 if (
this != &
other) {
1422 other.runtimeStrings =
nullptr;
1424 other.constants =
nullptr;
1426 other.runtimeRegularExpressions =
nullptr;
1428 other.runtimeClasses =
nullptr;
1430 other.imports =
nullptr;
1485#if Q_BYTE_ORDER == Q_BIG_ENDIAN
1496 *
this = std::move(
other);
1501 if (
this != &
other) {
1503 other.data =
nullptr;
1505 other.qmlData =
nullptr;
1508 other.dynamicStrings.clear();
1509 m_fileName = std::move(
other.m_fileName);
1510 other.m_fileName.clear();
1511 m_finalUrlString = std::move(
other.m_finalUrlString);
1512 other.m_finalUrlString.clear();
1513 m_module =
other.m_module;
1514 other.m_module =
nullptr;
1527#if Q_BYTE_ORDER == Q_BIG_ENDIAN
1532 m_finalUrlString.
clear();
1538#if Q_BYTE_ORDER == Q_BIG_ENDIAN
1541 for (
uint i = 0;
i <
data->constantTableSize; ++
i)
1554 if (index < data->stringTableSize)
1565 Heap::Module *
module()
const {
return m_module; }
1570 using namespace CompiledData;
1571 switch (binding->
type()) {
1610 Heap::Module *m_module =
nullptr;
1619 temporaryFlags(temporaryFlags)
1625 template<
typename Char>
1629 auto cleanup =
qScopeGuard([
this, oldFlags]() { mutableFlags() = oldFlags; });
1630 mutableFlags() |= temporaryFlags;
1637#if QT_CONFIG(temporaryfile)
1641 || !cacheFile.
commit()) {
1646 errorString->
clear();
1650 *errorString =
QStringLiteral(
"features.temporaryfile is disabled.");
1664 template<
typename Char>
1668 const Char *dataPtr;
1669 memcpy(&dataPtr, &unit,
sizeof(dataPtr));
iterator find(const int &key)
Returns an iterator pointing to the item with the key in the hash.
iterator Iterator
Qt-style synonym for QHash::iterator.
iterator end() noexcept
Returns an \l{STL-style iterators}{STL-style iterator} pointing to the imaginary item after the last ...
iterator insert(const int &key, const TypeReference &value)
Inserts a new item with the key and a value of value.
\inmodule QtCore \reentrant
qint64 write(const char *data, qint64 len)
Writes at most maxSize bytes of data from data to the device.
QString errorString() const
Returns a human-readable description of the last device error that occurred.
The QQmlEngine class provides an environment for instantiating QML components.
bool open(OpenMode flags) override
Opens the file using OpenMode mode, returning true if successful; otherwise false.
bool commit()
Commits the changes to disk, if all previous writes were successful.
\macro QT_RESTRICTED_CAST_FROM_ASCII
void clear()
Clears the contents of the string and makes it null.
qsizetype size() const
Returns the number of characters in this string.
static QString fromRawData(const QChar *, qsizetype size)
Constructs a QString that uses the first size Unicode characters in the array unicode.
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
QChar * data()
Returns a pointer to the data stored in the QString.
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static constexpr QTypeRevision zero()
Produces a QTypeRevision with major and minor version {0}.
~SaveableUnitPointer()=default
static bool writeDataToFile(const QString &outputFileName, const char *data, quint32 size, QString *errorString)
bool saveToDisk(const std::function< bool(const Char *, quint32)> &writer) const
SaveableUnitPointer(const Unit *unit, quint32 temporaryFlags=Unit::StaticData)
QSet< QString >::iterator it
Combined button and popup list for selecting options.
std::function< QByteArray()> DependentTypesHasher
static const char magic_str[]
\qmltype Particle \inqmlmodule QtQuick.Particles
constexpr Initialization Uninitialized
#define Q_STATIC_ASSERT(Condition)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
QLEInteger< quint32 > quint32_le
constexpr QSpecialIntegerBitfieldInitializer QSpecialIntegerBitfieldZero
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
static ControlElement< T > * ptr(QWidget *widget)
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLenum GLenum GLsizei void GLsizei void * column
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
QScopeGuard< typename std::decay< F >::type > qScopeGuard(F &&f)
[qScopeGuard]
QLatin1StringView QLatin1String
#define QStringLiteral(str)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
QT_END_NAMESPACE typedef QT_PREPEND_NAMESPACE(quintptr) WId
QList< QChar > characters
\inmodule QtCore \reentrant
Location referenceLocation
quint32_le propertyNameIndex
@ AliasPointsToPointerObject
qint32_le encodedMetaPropertyIndex
void setIsAliasToLocalAlias(bool isAliasToLocalAlias)
void setTargetObjectId(quint32 targetObjectId)
quint32_le_bitfield_union< NameIndexField, FlagsField > nameIndexAndFlags
quint32 targetObjectId() const
bool isObjectAlias() const
bool hasFlag(Flag flag) const
quint32_le_bitfield_union< IdIndexField, TargetObjectIdField, AliasToLocalAliasField > idIndexAndTargetObjectIdAndAliasToLocalAlias
void setNameIndex(quint32 nameIndex)
void setIdIndex(quint32 idIndex)
bool isAliasToLocalAlias() const
quint32 nameIndex() const
quint32_le localAliasIndex
quint32_le propertyNameIndex
bool isSignalHandler() const
bool isFunctionExpression() const
bool hasSignalHandlerBindingFlag() const
bool evaluatesToString() const
bool isAttachedProperty() const
quint32_le_bitfield_union< FlagsField, TypeField > flagsAndType
union QV4::CompiledData::Binding::@543 value
bool hasFlag(Flag flag) const
bool isGroupProperty() const
bool isValueBindingNoAlias() const
bool isTranslationBinding() const
bool valueAsBoolean() const
static QString escapedString(const QString &string)
bool isValueBinding() const
quint32_le translationDataIndex
quint32_le constantValueIndex
bool isValueBindingToAlias() const
Q_DECLARE_FLAGS(Flags, Flag)
@ InitializerForReadOnlyDeclaration
@ IsSignalHandlerExpression
quint32_le compiledScriptIndex
const quint32_le * localsTable() const
quint16_le sizeOfLocalTemporalDeadZone
static size_t align(size_t a)
static int calculateSize(int nLocals)
static int calculateSize(int nStaticMethods, int nMethods)
static size_t align(size_t a)
quint32_le methodTableOffset
const Method * methodTable() const
quint32_le nStaticMethods
quint32_le constructorFunction
const StaticValue * constants
CompilationUnitBase & operator=(CompilationUnitBase &&other) noexcept
Heap::String ** runtimeStrings
QV4::StaticValue * runtimeRegularExpressions
Heap::InternalClass ** runtimeClasses
const StaticValue ** imports
QString stringAt(uint index) const
QString bindingValueAsScriptString(const CompiledData::Binding *binding) const
void setUnitData(const Unit *unitData, const QmlUnit *qmlUnit=nullptr, const QString &fileName=QString(), const QString &finalUrlString=QString())
double bindingValueAsNumber(const CompiledData::Binding *binding) const
CompilationUnit(CompilationUnit &&other) noexcept
const QQmlPrivate::AOTCompiledFunction * aotCompiledFunctions
CompilationUnit(const Unit *unitData, const QQmlPrivate::AOTCompiledFunction *aotCompiledFunctions, const QString &fileName=QString(), const QString &finalUrlString=QString())
Heap::Module * module() const
QString finalUrlString() const
CompilationUnit & operator=(CompilationUnit &&other) noexcept
const Unit * unitData() const
void setModule(Heap::Module *module)
QStringList dynamicStrings
QString bindingValueAsString(const CompiledData::Binding *binding) const
const EnumValue * enumValueAt(int idx) const
const EnumValue * enumValuesEnd() const
const EnumValue * enumValuesBegin() const
static int calculateSize(int nEnumValues)
int enumValueCount() const
quint32_le nestedFunctionIndex
quint16_le firstTemporalDeadZoneRegister
size_t labelInfosOffset() const
const quint32_le * localsTable() const
static size_t align(size_t a)
const CodeOffsetToLineAndStatement * lineAndStatementNumberTable() const
quint16_le sizeOfRegisterTemporalDeadZone
quint16_le sizeOfLocalTemporalDeadZone
const char * code() const
static int calculateSize(int nFormals, int nLocals, int nLinesAndStatements, int nInnerfunctions, int labelInfoSize, int codeSize)
size_t lineAndStatementNumberOffset() const
const Parameter * formalsTable() const
const Parameter * formalsEnd() const
const Parameter * formalsBegin() const
const quint32_le * labelInfoTable() const
quint16_le nLineAndStatementNumbers
quint32_le qualifierIndex
void set(quint32 nameOffset, bool isAccessor)
quint32 nameOffset() const
static int calculateSize(int nMembers)
Location(quint32 l, quint32 c)
void set(quint32 line, quint32 column)
friend size_t qHash(const Location &location, size_t seed=0)
bool operator<(const Location &other) const
friend bool operator==(const Location &a, const Location &b)
Lookup(Type type, Mode mode, quint32 nameIndex)
quint32 nameIndex() const
@ Type_QmlContextPropertyGetter
void setFlags(Flags flags)
quint32_le offsetToBindings
TableIterator< Enum, Object, &Object::enumAt > EnumIterator
EnumIterator enumsBegin() const
Q_DECLARE_FLAGS(Flags, Flag)
quint32_le offsetToAliases
quint32_le offsetToProperties
int propertyCount() const
quint32_le offsetToSignals
const RequiredPropertyExtraData * requiredPropertyExtraDataAt(int idx) const
EnumIterator enumsEnd() const
const Enum * enumAt(int idx) const
RequiredPropertyExtraDataIterator requiredPropertyExtraDataEnd() const
bool hasAliasAsDefaultProperty() const
quint32_le offsetToInlineComponents
const RequiredPropertyExtraData * requiredPropertyExtraDataTable() const
TableIterator< Signal, Object, &Object::signalAt > SignalIterator
const Binding * bindingsEnd() const
quint32_le inheritedTypeNameIndex
bool hasFlag(Flag flag) const
const Property * propertyTable() const
@ HasCustomParserBindings
@ IsPartOfInlineComponent
SignalIterator signalsBegin() const
quint32_le_bitfield_union< FlagsField, DefaultPropertyIsAliasField, IdField > flagsAndDefaultPropertyIsAliasAndId
quint32_le offsetToNamedObjectsInComponent
int namedObjectsInComponentCount() const
InlineComponentIterator inlineComponentsEnd() const
qint32_le indexOfDefaultPropertyOrAlias
int functionCount() const
const Alias * aliasTable() const
quint16_le nInlineComponents
void setObjectId(qint32 id)
quint32_le offsetToRequiredPropertyExtraData
const InlineComponent * inlineComponentAt(int idx) const
const Property * propertiesEnd() const
quint32_le nNamedObjectsInComponent
const Binding * bindingTable() const
quint16_le nRequiredPropertyExtraData
const Signal * signalAt(int idx) const
const Property * propertiesBegin() const
Location locationOfIdProperty
const quint32_le * functionOffsetTable() const
static int calculateSizeExcludingSignalsAndEnums(int nFunctions, int nProperties, int nAliases, int nEnums, int nSignals, int nBindings, int nNamedObjectsInComponent, int nInlineComponents, int nRequiredPropertyExtraData)
TableIterator< InlineComponent, Object, &Object::inlineComponentAt > InlineComponentIterator
const InlineComponent * inlineComponentTable() const
InlineComponentIterator inlineComponentsBegin() const
TableIterator< RequiredPropertyExtraData, Object, &Object::requiredPropertyExtraDataAt > RequiredPropertyExtraDataIterator
SignalIterator signalsEnd() const
const Alias * aliasesEnd() const
quint32_le offsetToFunctions
const Binding * bindingsBegin() const
RequiredPropertyExtraDataIterator requiredPropertyExtraDataBegin() const
void setHasAliasAsDefaultProperty(bool defaultAlias)
const Alias * aliasesBegin() const
const quint32_le * namedObjectsInComponentTable() const
quint32 typeNameIndexOrCommonType() const
void set(Flags flags, quint32 typeNameIndexOrCommonType)
bool indexIsCommonType() const
Q_DECLARE_FLAGS(Flags, Flag)
void setIsList(bool isList)
void setIsReadOnly(bool isReadOnly)
bool isCommonType() const
void setTypeNameIndex(int nameIndex)
quint32_le_bitfield_union< CommonTypeOrTypeNameIndexField, IsRequiredField, IsCommonTypeField, IsListField, IsReadOnlyField > data
uint commonTypeOrTypeNameIndex() const
int typeNameIndex() const
void setIsRequired(bool isRequired)
void setCommonType(CommonType t)
CommonType commonType() const
quint32_le offsetToObjects
const Object * objectAt(int idx) const
const Import * importAt(int idx) const
quint32_le offsetToImports
quint32 stringIndex() const
RegExp(quint32 flags, quint32 stringIndex)
int parameterCount() const
const Parameter * parametersBegin() const
static int calculateSize(int nParameters)
const Parameter * parametersEnd() const
const Parameter * parameterAt(int idx) const
static int calculateSize(const QString &str)
bool operator==(const TableIterator &rhs) const
const Container * container
const ItemType * operator->()
bool operator!=(const TableIterator &rhs) const
TableIterator(const Container *container, int index)
static int calculateSize(int size)
uint stringIndexAt(uint i) const
static size_t align(size_t a)
uint rawStringIndexAt(uint i) const
const quint32_le * stringTable() const
void collectFromObject(const CompiledObject *obj)
TypeReference & add(int nameIndex, const Location &loc)
void collectFromObjects(Iterator it, Iterator end)
TypeReference(const Location &loc)
quint32_le offsetToLookupTable
quint32_le offsetToIndirectExportEntryTable
quint32_le offsetToJSClassTable
@ ListPropertyAssignReplace
@ FunctionSignaturesIgnored
@ ListPropertyAssignReplaceIfDefault
@ ListPropertyAssignReplaceIfNotDefault
@ NativeMethodsAcceptThisObject
quint32_le jsClassTableSize
quint32_le offsetToTemplateObjectTable
quint32_le functionTableSize
const TranslationData * translations() const
quint32_le offsetToRegexpTable
quint32_le importEntryTableSize
const ExportEntry * indirectExportEntryTable() const
const quint64_le * constants() const
quint32_le starExportEntryTableSize
quint32_le lookupTableSize
qint32_le indexOfRootFunction
QString stringAtInternal(uint idx) const
quint32_le offsetToLocalExportEntryTable
const quint32_le * functionOffsetTable() const
quint32_le offsetToClassTable
quint32_le classTableSize
quint32_le offsetToStringTable
quint32_le offsetToQmlUnit
const Function * functionAt(int idx) const
const TemplateObject * templateObjectAt(int idx) const
quint32_le offsetToFunctionTable
quint32_le offsetToStarExportEntryTable
const ExportEntry * starExportEntryTable() const
const Lookup * lookupTable() const
quint32_le offsetToModuleRequestTable
quint32_le translationTableSize
const RegExp * regexpAt(int index) const
const Block * blockAt(int idx) const
const ExportEntry * localExportEntryTable() const
const quint32_le * classOffsetTable() const
const quint32_le * moduleRequestTable() const
quint32_le sourceFileIndex
quint32_le moduleRequestTableSize
quint32_le offsetToTranslationTable
char libraryVersionHash[QmlCompileHashSpace]
quint32_le blockTableSize
quint32_le templateObjectTableSize
quint32_le localExportEntryTableSize
const Class * classAt(int idx) const
quint32_le regexpTableSize
quint32_le offsetToImportEntryTable
quint32_le stringTableSize
quint32_le constantTableSize
const ImportEntry * importEntryTable() const
qint64_le sourceTimeStamp
char dependencyMD5Checksum[16]
const QmlUnit * qmlUnit() const
quint32_le offsetToConstantTable
quint32_le offsetToBlockTable
const quint32_le * blockOffsetTable() const
quint32_le indirectExportEntryTableSize
const JSClassMember * jsClassAt(int idx, int *nMembers) const
const quint32_le * templateObjectOffsetTable() const
QV4_NEARLY_ALWAYS_INLINE double doubleValue() const
static constexpr StaticValue fromReturnedValue(ReturnedValue val)