|
|
@@ -136,7 +136,7 @@ namespace Js
|
|
|
|
|
|
public:
|
|
|
#if ENABLE_COPYONACCESS_ARRAY
|
|
|
- CacheForCopyOnAccessArraySegments *cacheForCopyOnAccessArraySegments;
|
|
|
+ Field(CacheForCopyOnAccessArraySegments *) cacheForCopyOnAccessArraySegments;
|
|
|
#endif
|
|
|
|
|
|
static DWORD GetScriptContextOffset() { return offsetof(JavascriptLibrary, scriptContext); }
|
|
|
@@ -180,89 +180,89 @@ namespace Js
|
|
|
static bool IsTypedArrayConstructor(Var constructor, ScriptContext* scriptContext);
|
|
|
|
|
|
private:
|
|
|
- Recycler * recycler;
|
|
|
- ExternalLibraryBase* externalLibraryList;
|
|
|
+ FieldNoBarrier(Recycler *) recycler;
|
|
|
+ Field(ExternalLibraryBase*) externalLibraryList;
|
|
|
|
|
|
- UndeclaredBlockVariable* undeclBlockVarSentinel;
|
|
|
+ Field(UndeclaredBlockVariable*) undeclBlockVarSentinel;
|
|
|
|
|
|
- DynamicType * generatorConstructorPrototypeObjectType;
|
|
|
- DynamicType * constructorPrototypeObjectType;
|
|
|
- DynamicType * heapArgumentsType;
|
|
|
- DynamicType * activationObjectType;
|
|
|
- DynamicType * arrayType;
|
|
|
- DynamicType * nativeIntArrayType;
|
|
|
+ Field(DynamicType *) generatorConstructorPrototypeObjectType;
|
|
|
+ Field(DynamicType *) constructorPrototypeObjectType;
|
|
|
+ Field(DynamicType *) heapArgumentsType;
|
|
|
+ Field(DynamicType *) activationObjectType;
|
|
|
+ Field(DynamicType *) arrayType;
|
|
|
+ Field(DynamicType *) nativeIntArrayType;
|
|
|
#if ENABLE_COPYONACCESS_ARRAY
|
|
|
- DynamicType * copyOnAccessNativeIntArrayType;
|
|
|
+ Field(DynamicType *) copyOnAccessNativeIntArrayType;
|
|
|
#endif
|
|
|
- DynamicType * nativeFloatArrayType;
|
|
|
- DynamicType * arrayBufferType;
|
|
|
- DynamicType * sharedArrayBufferType;
|
|
|
- DynamicType * dataViewType;
|
|
|
- DynamicType * typedArrayType;
|
|
|
- DynamicType * int8ArrayType;
|
|
|
- DynamicType * uint8ArrayType;
|
|
|
- DynamicType * uint8ClampedArrayType;
|
|
|
- DynamicType * int16ArrayType;
|
|
|
- DynamicType * uint16ArrayType;
|
|
|
- DynamicType * int32ArrayType;
|
|
|
- DynamicType * uint32ArrayType;
|
|
|
- DynamicType * float32ArrayType;
|
|
|
- DynamicType * float64ArrayType;
|
|
|
- DynamicType * int64ArrayType;
|
|
|
- DynamicType * uint64ArrayType;
|
|
|
- DynamicType * boolArrayType;
|
|
|
- DynamicType * charArrayType;
|
|
|
- StaticType * booleanTypeStatic;
|
|
|
- DynamicType * booleanTypeDynamic;
|
|
|
- DynamicType * dateType;
|
|
|
- StaticType * variantDateType;
|
|
|
- DynamicType * symbolTypeDynamic;
|
|
|
- StaticType * symbolTypeStatic;
|
|
|
- DynamicType * iteratorResultType;
|
|
|
- DynamicType * arrayIteratorType;
|
|
|
- DynamicType * mapIteratorType;
|
|
|
- DynamicType * setIteratorType;
|
|
|
- DynamicType * stringIteratorType;
|
|
|
- DynamicType * promiseType;
|
|
|
- DynamicType * listIteratorType;
|
|
|
-
|
|
|
- JavascriptFunction* builtinFunctions[BuiltinFunction::Count];
|
|
|
-
|
|
|
- INT_PTR vtableAddresses[VTableValue::Count];
|
|
|
- ConstructorCache *constructorCacheDefaultInstance;
|
|
|
- __declspec(align(16)) const BYTE *absDoubleCst;
|
|
|
- double const *uintConvertConst;
|
|
|
+ Field(DynamicType *) nativeFloatArrayType;
|
|
|
+ Field(DynamicType *) arrayBufferType;
|
|
|
+ Field(DynamicType *) sharedArrayBufferType;
|
|
|
+ Field(DynamicType *) dataViewType;
|
|
|
+ Field(DynamicType *) typedArrayType;
|
|
|
+ Field(DynamicType *) int8ArrayType;
|
|
|
+ Field(DynamicType *) uint8ArrayType;
|
|
|
+ Field(DynamicType *) uint8ClampedArrayType;
|
|
|
+ Field(DynamicType *) int16ArrayType;
|
|
|
+ Field(DynamicType *) uint16ArrayType;
|
|
|
+ Field(DynamicType *) int32ArrayType;
|
|
|
+ Field(DynamicType *) uint32ArrayType;
|
|
|
+ Field(DynamicType *) float32ArrayType;
|
|
|
+ Field(DynamicType *) float64ArrayType;
|
|
|
+ Field(DynamicType *) int64ArrayType;
|
|
|
+ Field(DynamicType *) uint64ArrayType;
|
|
|
+ Field(DynamicType *) boolArrayType;
|
|
|
+ Field(DynamicType *) charArrayType;
|
|
|
+ Field(StaticType *) booleanTypeStatic;
|
|
|
+ Field(DynamicType *) booleanTypeDynamic;
|
|
|
+ Field(DynamicType *) dateType;
|
|
|
+ Field(StaticType *) variantDateType;
|
|
|
+ Field(DynamicType *) symbolTypeDynamic;
|
|
|
+ Field(StaticType *) symbolTypeStatic;
|
|
|
+ Field(DynamicType *) iteratorResultType;
|
|
|
+ Field(DynamicType *) arrayIteratorType;
|
|
|
+ Field(DynamicType *) mapIteratorType;
|
|
|
+ Field(DynamicType *) setIteratorType;
|
|
|
+ Field(DynamicType *) stringIteratorType;
|
|
|
+ Field(DynamicType *) promiseType;
|
|
|
+ Field(DynamicType *) listIteratorType;
|
|
|
+
|
|
|
+ Field(JavascriptFunction* ) builtinFunctions[BuiltinFunction::Count];
|
|
|
+
|
|
|
+ Field(INT_PTR ) vtableAddresses[VTableValue::Count];
|
|
|
+ Field(ConstructorCache *) constructorCacheDefaultInstance;
|
|
|
+ __declspec(align(16)) Field(const BYTE *) absDoubleCst;
|
|
|
+ Field(double const *) uintConvertConst;
|
|
|
|
|
|
// Function Types
|
|
|
- DynamicTypeHandler * anonymousFunctionTypeHandler;
|
|
|
- DynamicTypeHandler * anonymousFunctionWithPrototypeTypeHandler;
|
|
|
- DynamicTypeHandler * functionTypeHandler;
|
|
|
- DynamicTypeHandler * functionWithPrototypeTypeHandler;
|
|
|
- DynamicType * externalFunctionWithDeferredPrototypeType;
|
|
|
- DynamicType * wrappedFunctionWithDeferredPrototypeType;
|
|
|
- DynamicType * stdCallFunctionWithDeferredPrototypeType;
|
|
|
- DynamicType * idMappedFunctionWithPrototypeType;
|
|
|
- DynamicType * externalConstructorFunctionWithDeferredPrototypeType;
|
|
|
- DynamicType * defaultExternalConstructorFunctionWithDeferredPrototypeType;
|
|
|
- DynamicType * boundFunctionType;
|
|
|
- DynamicType * regexConstructorType;
|
|
|
- DynamicType * crossSiteDeferredPrototypeFunctionType;
|
|
|
- DynamicType * crossSiteIdMappedFunctionWithPrototypeType;
|
|
|
- DynamicType * crossSiteExternalConstructFunctionWithPrototypeType;
|
|
|
-
|
|
|
- StaticType * enumeratorType;
|
|
|
- DynamicType * errorType;
|
|
|
- DynamicType * evalErrorType;
|
|
|
- DynamicType * rangeErrorType;
|
|
|
- DynamicType * referenceErrorType;
|
|
|
- DynamicType * syntaxErrorType;
|
|
|
- DynamicType * typeErrorType;
|
|
|
- DynamicType * uriErrorType;
|
|
|
+ Field(DynamicTypeHandler *) anonymousFunctionTypeHandler;
|
|
|
+ Field(DynamicTypeHandler *) anonymousFunctionWithPrototypeTypeHandler;
|
|
|
+ Field(DynamicTypeHandler *) functionTypeHandler;
|
|
|
+ Field(DynamicTypeHandler *) functionWithPrototypeTypeHandler;
|
|
|
+ Field(DynamicType *) externalFunctionWithDeferredPrototypeType;
|
|
|
+ Field(DynamicType *) wrappedFunctionWithDeferredPrototypeType;
|
|
|
+ Field(DynamicType *) stdCallFunctionWithDeferredPrototypeType;
|
|
|
+ Field(DynamicType *) idMappedFunctionWithPrototypeType;
|
|
|
+ Field(DynamicType *) externalConstructorFunctionWithDeferredPrototypeType;
|
|
|
+ Field(DynamicType *) defaultExternalConstructorFunctionWithDeferredPrototypeType;
|
|
|
+ Field(DynamicType *) boundFunctionType;
|
|
|
+ Field(DynamicType *) regexConstructorType;
|
|
|
+ Field(DynamicType *) crossSiteDeferredPrototypeFunctionType;
|
|
|
+ Field(DynamicType *) crossSiteIdMappedFunctionWithPrototypeType;
|
|
|
+ Field(DynamicType *) crossSiteExternalConstructFunctionWithPrototypeType;
|
|
|
+
|
|
|
+ Field(StaticType *) enumeratorType;
|
|
|
+ Field(DynamicType *) errorType;
|
|
|
+ Field(DynamicType *) evalErrorType;
|
|
|
+ Field(DynamicType *) rangeErrorType;
|
|
|
+ Field(DynamicType *) referenceErrorType;
|
|
|
+ Field(DynamicType *) syntaxErrorType;
|
|
|
+ Field(DynamicType *) typeErrorType;
|
|
|
+ Field(DynamicType *) uriErrorType;
|
|
|
DynamicType * webAssemblyCompileErrorType;
|
|
|
DynamicType * webAssemblyRuntimeErrorType;
|
|
|
- StaticType * numberTypeStatic;
|
|
|
- StaticType * int64NumberTypeStatic;
|
|
|
- StaticType * uint64NumberTypeStatic;
|
|
|
+ Field(StaticType *) numberTypeStatic;
|
|
|
+ Field(StaticType *) int64NumberTypeStatic;
|
|
|
+ Field(StaticType *) uint64NumberTypeStatic;
|
|
|
|
|
|
DynamicType * webAssemblyModuleType;
|
|
|
DynamicType * webAssemblyInstanceType;
|
|
|
@@ -270,155 +270,155 @@ namespace Js
|
|
|
DynamicType * webAssemblyTableType;
|
|
|
|
|
|
// SIMD_JS
|
|
|
- DynamicType * simdBool8x16TypeDynamic;
|
|
|
- DynamicType * simdBool16x8TypeDynamic;
|
|
|
- DynamicType * simdBool32x4TypeDynamic;
|
|
|
- DynamicType * simdInt8x16TypeDynamic;
|
|
|
- DynamicType * simdInt16x8TypeDynamic;
|
|
|
- DynamicType * simdInt32x4TypeDynamic;
|
|
|
- DynamicType * simdUint8x16TypeDynamic;
|
|
|
- DynamicType * simdUint16x8TypeDynamic;
|
|
|
- DynamicType * simdUint32x4TypeDynamic;
|
|
|
- DynamicType * simdFloat32x4TypeDynamic;
|
|
|
-
|
|
|
- StaticType * simdFloat32x4TypeStatic;
|
|
|
- StaticType * simdInt32x4TypeStatic;
|
|
|
- StaticType * simdInt8x16TypeStatic;
|
|
|
- StaticType * simdFloat64x2TypeStatic;
|
|
|
- StaticType * simdInt16x8TypeStatic;
|
|
|
- StaticType * simdBool32x4TypeStatic;
|
|
|
- StaticType * simdBool16x8TypeStatic;
|
|
|
- StaticType * simdBool8x16TypeStatic;
|
|
|
- StaticType * simdUint32x4TypeStatic;
|
|
|
- StaticType * simdUint16x8TypeStatic;
|
|
|
- StaticType * simdUint8x16TypeStatic;
|
|
|
-
|
|
|
- DynamicType * numberTypeDynamic;
|
|
|
- DynamicType * objectTypes[PreInitializedObjectTypeCount];
|
|
|
- DynamicType * objectHeaderInlinedTypes[PreInitializedObjectTypeCount];
|
|
|
- DynamicType * regexPrototypeType;
|
|
|
- DynamicType * regexType;
|
|
|
- DynamicType * regexResultType;
|
|
|
- StaticType * stringTypeStatic;
|
|
|
- DynamicType * stringTypeDynamic;
|
|
|
- DynamicType * mapType;
|
|
|
- DynamicType * setType;
|
|
|
- DynamicType * weakMapType;
|
|
|
- DynamicType * weakSetType;
|
|
|
- DynamicType * proxyType;
|
|
|
- StaticType * withType;
|
|
|
- DynamicType * SpreadArgumentType;
|
|
|
- DynamicType * moduleNamespaceType;
|
|
|
- PropertyDescriptor defaultPropertyDescriptor;
|
|
|
-
|
|
|
- JavascriptString* nullString;
|
|
|
- JavascriptString* emptyString;
|
|
|
- JavascriptString* quotesString;
|
|
|
- JavascriptString* whackString;
|
|
|
- JavascriptString* objectDisplayString;
|
|
|
- JavascriptString* stringTypeDisplayString;
|
|
|
- JavascriptString* errorDisplayString;
|
|
|
- JavascriptString* functionPrefixString;
|
|
|
- JavascriptString* generatorFunctionPrefixString;
|
|
|
- JavascriptString* asyncFunctionPrefixString;
|
|
|
- JavascriptString* functionDisplayString;
|
|
|
- JavascriptString* xDomainFunctionDisplayString;
|
|
|
- JavascriptString* undefinedDisplayString;
|
|
|
- JavascriptString* nanDisplayString;
|
|
|
- JavascriptString* nullDisplayString;
|
|
|
- JavascriptString* unknownDisplayString;
|
|
|
- JavascriptString* commaDisplayString;
|
|
|
- JavascriptString* commaSpaceDisplayString;
|
|
|
- JavascriptString* trueDisplayString;
|
|
|
- JavascriptString* falseDisplayString;
|
|
|
- JavascriptString* lengthDisplayString;
|
|
|
- JavascriptString* invalidDateString;
|
|
|
- JavascriptString* objectTypeDisplayString;
|
|
|
- JavascriptString* functionTypeDisplayString;
|
|
|
- JavascriptString* booleanTypeDisplayString;
|
|
|
- JavascriptString* numberTypeDisplayString;
|
|
|
- JavascriptString* moduleTypeDisplayString;
|
|
|
+ Field(DynamicType *) simdBool8x16TypeDynamic;
|
|
|
+ Field(DynamicType *) simdBool16x8TypeDynamic;
|
|
|
+ Field(DynamicType *) simdBool32x4TypeDynamic;
|
|
|
+ Field(DynamicType *) simdInt8x16TypeDynamic;
|
|
|
+ Field(DynamicType *) simdInt16x8TypeDynamic;
|
|
|
+ Field(DynamicType *) simdInt32x4TypeDynamic;
|
|
|
+ Field(DynamicType *) simdUint8x16TypeDynamic;
|
|
|
+ Field(DynamicType *) simdUint16x8TypeDynamic;
|
|
|
+ Field(DynamicType *) simdUint32x4TypeDynamic;
|
|
|
+ Field(DynamicType *) simdFloat32x4TypeDynamic;
|
|
|
+
|
|
|
+ Field(StaticType *) simdFloat32x4TypeStatic;
|
|
|
+ Field(StaticType *) simdInt32x4TypeStatic;
|
|
|
+ Field(StaticType *) simdInt8x16TypeStatic;
|
|
|
+ Field(StaticType *) simdFloat64x2TypeStatic;
|
|
|
+ Field(StaticType *) simdInt16x8TypeStatic;
|
|
|
+ Field(StaticType *) simdBool32x4TypeStatic;
|
|
|
+ Field(StaticType *) simdBool16x8TypeStatic;
|
|
|
+ Field(StaticType *) simdBool8x16TypeStatic;
|
|
|
+ Field(StaticType *) simdUint32x4TypeStatic;
|
|
|
+ Field(StaticType *) simdUint16x8TypeStatic;
|
|
|
+ Field(StaticType *) simdUint8x16TypeStatic;
|
|
|
+
|
|
|
+ Field(DynamicType *) numberTypeDynamic;
|
|
|
+ Field(DynamicType * ) objectTypes[PreInitializedObjectTypeCount];
|
|
|
+ Field(DynamicType * ) objectHeaderInlinedTypes[PreInitializedObjectTypeCount];
|
|
|
+ Field(DynamicType *) regexPrototypeType;
|
|
|
+ Field(DynamicType *) regexType;
|
|
|
+ Field(DynamicType *) regexResultType;
|
|
|
+ Field(StaticType *) stringTypeStatic;
|
|
|
+ Field(DynamicType *) stringTypeDynamic;
|
|
|
+ Field(DynamicType *) mapType;
|
|
|
+ Field(DynamicType *) setType;
|
|
|
+ Field(DynamicType *) weakMapType;
|
|
|
+ Field(DynamicType *) weakSetType;
|
|
|
+ Field(DynamicType *) proxyType;
|
|
|
+ Field(StaticType *) withType;
|
|
|
+ Field(DynamicType *) SpreadArgumentType;
|
|
|
+ Field(DynamicType *) moduleNamespaceType;
|
|
|
+ Field(PropertyDescriptor) defaultPropertyDescriptor;
|
|
|
+
|
|
|
+ Field(JavascriptString*) nullString;
|
|
|
+ Field(JavascriptString*) emptyString;
|
|
|
+ Field(JavascriptString*) quotesString;
|
|
|
+ Field(JavascriptString*) whackString;
|
|
|
+ Field(JavascriptString*) objectDisplayString;
|
|
|
+ Field(JavascriptString*) stringTypeDisplayString;
|
|
|
+ Field(JavascriptString*) errorDisplayString;
|
|
|
+ Field(JavascriptString*) functionPrefixString;
|
|
|
+ Field(JavascriptString*) generatorFunctionPrefixString;
|
|
|
+ Field(JavascriptString*) asyncFunctionPrefixString;
|
|
|
+ Field(JavascriptString*) functionDisplayString;
|
|
|
+ Field(JavascriptString*) xDomainFunctionDisplayString;
|
|
|
+ Field(JavascriptString*) undefinedDisplayString;
|
|
|
+ Field(JavascriptString*) nanDisplayString;
|
|
|
+ Field(JavascriptString*) nullDisplayString;
|
|
|
+ Field(JavascriptString*) unknownDisplayString;
|
|
|
+ Field(JavascriptString*) commaDisplayString;
|
|
|
+ Field(JavascriptString*) commaSpaceDisplayString;
|
|
|
+ Field(JavascriptString*) trueDisplayString;
|
|
|
+ Field(JavascriptString*) falseDisplayString;
|
|
|
+ Field(JavascriptString*) lengthDisplayString;
|
|
|
+ Field(JavascriptString*) invalidDateString;
|
|
|
+ Field(JavascriptString*) objectTypeDisplayString;
|
|
|
+ Field(JavascriptString*) functionTypeDisplayString;
|
|
|
+ Field(JavascriptString*) booleanTypeDisplayString;
|
|
|
+ Field(JavascriptString*) numberTypeDisplayString;
|
|
|
+ Field(JavascriptString*) moduleTypeDisplayString;
|
|
|
|
|
|
// SIMD_JS
|
|
|
- JavascriptString* simdFloat32x4DisplayString;
|
|
|
- JavascriptString* simdFloat64x2DisplayString;
|
|
|
- JavascriptString* simdInt32x4DisplayString;
|
|
|
- JavascriptString* simdInt16x8DisplayString;
|
|
|
- JavascriptString* simdInt8x16DisplayString;
|
|
|
- JavascriptString* simdBool32x4DisplayString;
|
|
|
- JavascriptString* simdBool16x8DisplayString;
|
|
|
- JavascriptString* simdBool8x16DisplayString;
|
|
|
- JavascriptString* simdUint32x4DisplayString;
|
|
|
- JavascriptString* simdUint16x8DisplayString;
|
|
|
- JavascriptString* simdUint8x16DisplayString;
|
|
|
+ Field(JavascriptString*) simdFloat32x4DisplayString;
|
|
|
+ Field(JavascriptString*) simdFloat64x2DisplayString;
|
|
|
+ Field(JavascriptString*) simdInt32x4DisplayString;
|
|
|
+ Field(JavascriptString*) simdInt16x8DisplayString;
|
|
|
+ Field(JavascriptString*) simdInt8x16DisplayString;
|
|
|
+ Field(JavascriptString*) simdBool32x4DisplayString;
|
|
|
+ Field(JavascriptString*) simdBool16x8DisplayString;
|
|
|
+ Field(JavascriptString*) simdBool8x16DisplayString;
|
|
|
+ Field(JavascriptString*) simdUint32x4DisplayString;
|
|
|
+ Field(JavascriptString*) simdUint16x8DisplayString;
|
|
|
+ Field(JavascriptString*) simdUint8x16DisplayString;
|
|
|
|
|
|
|
|
|
|
|
|
- JavascriptString* symbolTypeDisplayString;
|
|
|
- JavascriptString* debuggerDeadZoneBlockVariableString;
|
|
|
+ Field(JavascriptString*) symbolTypeDisplayString;
|
|
|
+ Field(JavascriptString*) debuggerDeadZoneBlockVariableString;
|
|
|
|
|
|
- DynamicObject* missingPropertyHolder;
|
|
|
+ Field(DynamicObject*) missingPropertyHolder;
|
|
|
|
|
|
- StaticType* throwErrorObjectType;
|
|
|
+ Field(StaticType*) throwErrorObjectType;
|
|
|
|
|
|
- PropertyStringCacheMap* propertyStringMap;
|
|
|
+ Field(PropertyStringCacheMap*) propertyStringMap;
|
|
|
|
|
|
- ConstructorCache* builtInConstructorCache;
|
|
|
+ Field(ConstructorCache*) builtInConstructorCache;
|
|
|
|
|
|
#ifdef ENABLE_DEBUG_CONFIG_OPTIONS
|
|
|
- JavascriptFunction* debugObjectFaultInjectionCookieGetterFunction;
|
|
|
- JavascriptFunction* debugObjectFaultInjectionCookieSetterFunction;
|
|
|
+ Field(JavascriptFunction*) debugObjectFaultInjectionCookieGetterFunction;
|
|
|
+ Field(JavascriptFunction*) debugObjectFaultInjectionCookieSetterFunction;
|
|
|
#endif
|
|
|
|
|
|
- JavascriptFunction* evalFunctionObject;
|
|
|
- JavascriptFunction* arrayPrototypeValuesFunction;
|
|
|
- JavascriptFunction* parseIntFunctionObject;
|
|
|
- JavascriptFunction* parseFloatFunctionObject;
|
|
|
- JavascriptFunction* arrayPrototypeToStringFunction;
|
|
|
- JavascriptFunction* arrayPrototypeToLocaleStringFunction;
|
|
|
- JavascriptFunction* identityFunction;
|
|
|
- JavascriptFunction* throwerFunction;
|
|
|
- JavascriptFunction* promiseResolveFunction;
|
|
|
- JavascriptFunction* generatorNextFunction;
|
|
|
- JavascriptFunction* generatorThrowFunction;
|
|
|
-
|
|
|
- JavascriptFunction* objectValueOfFunction;
|
|
|
- JavascriptFunction* objectToStringFunction;
|
|
|
+ Field(JavascriptFunction*) evalFunctionObject;
|
|
|
+ Field(JavascriptFunction*) arrayPrototypeValuesFunction;
|
|
|
+ Field(JavascriptFunction*) parseIntFunctionObject;
|
|
|
+ Field(JavascriptFunction*) parseFloatFunctionObject;
|
|
|
+ Field(JavascriptFunction*) arrayPrototypeToStringFunction;
|
|
|
+ Field(JavascriptFunction*) arrayPrototypeToLocaleStringFunction;
|
|
|
+ Field(JavascriptFunction*) identityFunction;
|
|
|
+ Field(JavascriptFunction*) throwerFunction;
|
|
|
+ Field(JavascriptFunction*) promiseResolveFunction;
|
|
|
+ Field(JavascriptFunction*) generatorNextFunction;
|
|
|
+ Field(JavascriptFunction*) generatorThrowFunction;
|
|
|
+
|
|
|
+ Field(JavascriptFunction*) objectValueOfFunction;
|
|
|
+ Field(JavascriptFunction*) objectToStringFunction;
|
|
|
|
|
|
#ifdef ENABLE_WASM
|
|
|
DynamicObject* webAssemblyObject;
|
|
|
#endif
|
|
|
|
|
|
// SIMD_JS
|
|
|
- JavascriptFunction* simdFloat32x4ToStringFunction;
|
|
|
- JavascriptFunction* simdFloat64x2ToStringFunction;
|
|
|
- JavascriptFunction* simdInt32x4ToStringFunction;
|
|
|
- JavascriptFunction* simdInt16x8ToStringFunction;
|
|
|
- JavascriptFunction* simdInt8x16ToStringFunction;
|
|
|
- JavascriptFunction* simdBool32x4ToStringFunction;
|
|
|
- JavascriptFunction* simdBool16x8ToStringFunction;
|
|
|
- JavascriptFunction* simdBool8x16ToStringFunction;
|
|
|
- JavascriptFunction* simdUint32x4ToStringFunction;
|
|
|
- JavascriptFunction* simdUint16x8ToStringFunction;
|
|
|
- JavascriptFunction* simdUint8x16ToStringFunction;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- JavascriptSymbol* symbolMatch;
|
|
|
- JavascriptSymbol* symbolReplace;
|
|
|
- JavascriptSymbol* symbolSearch;
|
|
|
- JavascriptSymbol* symbolSplit;
|
|
|
-
|
|
|
- UnifiedRegex::RegexPattern * emptyRegexPattern;
|
|
|
- JavascriptFunction* regexExecFunction;
|
|
|
- JavascriptFunction* regexFlagsGetterFunction;
|
|
|
- JavascriptFunction* regexGlobalGetterFunction;
|
|
|
- JavascriptFunction* regexStickyGetterFunction;
|
|
|
- JavascriptFunction* regexUnicodeGetterFunction;
|
|
|
-
|
|
|
- RuntimeFunction* sharedArrayBufferConstructor;
|
|
|
- DynamicObject* sharedArrayBufferPrototype;
|
|
|
- DynamicObject* atomicsObject;
|
|
|
+ Field(JavascriptFunction*) simdFloat32x4ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdFloat64x2ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdInt32x4ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdInt16x8ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdInt8x16ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdBool32x4ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdBool16x8ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdBool8x16ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdUint32x4ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdUint16x8ToStringFunction;
|
|
|
+ Field(JavascriptFunction*) simdUint8x16ToStringFunction;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Field(JavascriptSymbol*) symbolMatch;
|
|
|
+ Field(JavascriptSymbol*) symbolReplace;
|
|
|
+ Field(JavascriptSymbol*) symbolSearch;
|
|
|
+ Field(JavascriptSymbol*) symbolSplit;
|
|
|
+
|
|
|
+ Field(UnifiedRegex::RegexPattern *) emptyRegexPattern;
|
|
|
+ Field(JavascriptFunction*) regexExecFunction;
|
|
|
+ Field(JavascriptFunction*) regexFlagsGetterFunction;
|
|
|
+ Field(JavascriptFunction*) regexGlobalGetterFunction;
|
|
|
+ Field(JavascriptFunction*) regexStickyGetterFunction;
|
|
|
+ Field(JavascriptFunction*) regexUnicodeGetterFunction;
|
|
|
+
|
|
|
+ Field(RuntimeFunction*) sharedArrayBufferConstructor;
|
|
|
+ Field(DynamicObject*) sharedArrayBufferPrototype;
|
|
|
+ Field(DynamicObject*) atomicsObject;
|
|
|
|
|
|
DynamicObject* webAssemblyCompileErrorPrototype;
|
|
|
RuntimeFunction* webAssemblyCompileErrorConstructor;
|
|
|
@@ -434,37 +434,37 @@ namespace Js
|
|
|
DynamicObject* webAssemblyTablePrototype;
|
|
|
RuntimeFunction* webAssemblyTableConstructor;
|
|
|
|
|
|
- int regexConstructorSlotIndex;
|
|
|
- int regexExecSlotIndex;
|
|
|
- int regexFlagsGetterSlotIndex;
|
|
|
- int regexGlobalGetterSlotIndex;
|
|
|
- int regexStickyGetterSlotIndex;
|
|
|
- int regexUnicodeGetterSlotIndex;
|
|
|
+ Field(int) regexConstructorSlotIndex;
|
|
|
+ Field(int) regexExecSlotIndex;
|
|
|
+ Field(int) regexFlagsGetterSlotIndex;
|
|
|
+ Field(int) regexGlobalGetterSlotIndex;
|
|
|
+ Field(int) regexStickyGetterSlotIndex;
|
|
|
+ Field(int) regexUnicodeGetterSlotIndex;
|
|
|
|
|
|
- mutable CharStringCache charStringCache;
|
|
|
+ mutable Field(CharStringCache) charStringCache;
|
|
|
|
|
|
- PromiseContinuationCallback nativeHostPromiseContinuationFunction;
|
|
|
- void *nativeHostPromiseContinuationFunctionState;
|
|
|
+ FieldNoBarrier(PromiseContinuationCallback) nativeHostPromiseContinuationFunction;
|
|
|
+ Field(void *) nativeHostPromiseContinuationFunctionState;
|
|
|
|
|
|
typedef SList<Js::FunctionProxy*, Recycler> FunctionReferenceList;
|
|
|
|
|
|
- void * bindRefChunkBegin;
|
|
|
- void ** bindRefChunkCurrent;
|
|
|
- void ** bindRefChunkEnd;
|
|
|
- TypePath* rootPath; // this should be in library instead of ScriptContext::Cache
|
|
|
- void* scriptContextCache; // forward declaration for point to ScriptContext::Cache such that we don't need to hard pin it.
|
|
|
- FunctionReferenceList* dynamicFunctionReference;
|
|
|
- uint dynamicFunctionReferenceDepth;
|
|
|
- FinalizableObject* jsrtContextObject;
|
|
|
+ Field(void *) bindRefChunkBegin;
|
|
|
+ Field(Field(void*)*) bindRefChunkCurrent;
|
|
|
+ Field(Field(void*)*) bindRefChunkEnd;
|
|
|
+ Field(TypePath*) rootPath; // this should be in library instead of ScriptContext::Cache
|
|
|
+ Field(void*) scriptContextCache; // forward declaration for point to ScriptContext::Cache such that we don't need to hard pin it.
|
|
|
+ Field(FunctionReferenceList*) dynamicFunctionReference;
|
|
|
+ Field(uint) dynamicFunctionReferenceDepth;
|
|
|
+ Field(FinalizableObject*) jsrtContextObject;
|
|
|
|
|
|
typedef JsUtil::BaseHashSet<RecyclerWeakReference<RecyclableObject>*, Recycler, PowerOf2SizePolicy, RecyclerWeakReference<RecyclableObject>*, StringTemplateCallsiteObjectComparer> StringTemplateCallsiteObjectList;
|
|
|
|
|
|
// Used to store a list of template callsite objects.
|
|
|
// We use the raw strings in the callsite object (or a string template parse node) to identify unique callsite objects in the list.
|
|
|
// See abstract operation GetTemplateObject in ES6 Spec (RC1) 12.2.8.3
|
|
|
- StringTemplateCallsiteObjectList* stringTemplateCallsiteObjectList;
|
|
|
+ Field(StringTemplateCallsiteObjectList*) stringTemplateCallsiteObjectList;
|
|
|
|
|
|
- ModuleRecordList* moduleRecordList;
|
|
|
+ Field(ModuleRecordList*) moduleRecordList;
|
|
|
|
|
|
// This list contains types ensured to have only writable data properties in it and all objects in its prototype chain
|
|
|
// (i.e., no readonly properties or accessors). Only prototype objects' types are stored in the list. When something
|
|
|
@@ -480,13 +480,13 @@ namespace Js
|
|
|
//
|
|
|
// This list is only used to invalidate the status of types. The type itself contains a boolean indicating whether it
|
|
|
// and prototypes contain only writable data properties, which is reset upon invalidating the status.
|
|
|
- JsUtil::List<Type *> *typesEnsuredToHaveOnlyWritableDataPropertiesInItAndPrototypeChain;
|
|
|
+ Field(JsUtil::List<Type *> *) typesEnsuredToHaveOnlyWritableDataPropertiesInItAndPrototypeChain;
|
|
|
|
|
|
- uint64 randSeed0, randSeed1;
|
|
|
- bool isPRNGSeeded;
|
|
|
- bool inProfileMode;
|
|
|
- bool inDispatchProfileMode;
|
|
|
- bool arrayObjectHasUserDefinedSpecies;
|
|
|
+ Field(uint64) randSeed0, randSeed1;
|
|
|
+ Field(bool) isPRNGSeeded;
|
|
|
+ Field(bool) inProfileMode;
|
|
|
+ Field(bool) inDispatchProfileMode;
|
|
|
+ Field(bool) arrayObjectHasUserDefinedSpecies;
|
|
|
|
|
|
JavascriptFunction * AddFunctionToLibraryObjectWithPrototype(DynamicObject * object, PropertyId propertyId, FunctionInfo * functionInfo, int length, DynamicObject * prototype = nullptr, DynamicType * functionType = nullptr);
|
|
|
JavascriptFunction * AddFunctionToLibraryObject(DynamicObject* object, PropertyId propertyId, FunctionInfo * functionInfo, int length, PropertyAttributes attributes = PropertyBuiltInMethodDefaults);
|
|
|
@@ -767,7 +767,7 @@ namespace Js
|
|
|
DynamicType * GetSIMDUint16x8TypeDynamic() const { return simdUint16x8TypeDynamic; }
|
|
|
DynamicType * GetSIMDUint32x4TypeDynamic() const { return simdUint32x4TypeDynamic; }
|
|
|
DynamicType * GetSIMDFloat32x4TypeDynamic() const { return simdFloat32x4TypeDynamic; }
|
|
|
-
|
|
|
+
|
|
|
StaticType* GetSIMDFloat32x4TypeStatic() const { return simdFloat32x4TypeStatic; }
|
|
|
StaticType* GetSIMDFloat64x2TypeStatic() const { return simdFloat64x2TypeStatic; }
|
|
|
StaticType* GetSIMDInt32x4TypeStatic() const { return simdInt32x4TypeStatic; }
|
|
|
@@ -1104,12 +1104,12 @@ namespace Js
|
|
|
static const char16* GetStringTemplateCallsiteObjectKey(Var callsite);
|
|
|
#endif
|
|
|
|
|
|
- JavascriptFunction** GetBuiltinFunctions();
|
|
|
+ Field(JavascriptFunction*)* GetBuiltinFunctions();
|
|
|
INT_PTR* GetVTableAddresses();
|
|
|
static BuiltinFunction GetBuiltinFunctionForPropId(PropertyId id);
|
|
|
static BuiltinFunction GetBuiltInForFuncInfo(intptr_t funcInfoAddr, ThreadContextInfo *context);
|
|
|
#if DBG
|
|
|
- static void CheckRegisteredBuiltIns(JavascriptFunction** builtInFuncs, ScriptContext *scriptContext);
|
|
|
+ static void CheckRegisteredBuiltIns(Field(JavascriptFunction*)* builtInFuncs, ScriptContext *scriptContext);
|
|
|
#endif
|
|
|
static BOOL CanFloatPreferenceFunc(BuiltinFunction index);
|
|
|
static BOOL IsFltFunc(BuiltinFunction index);
|
|
|
@@ -1164,8 +1164,8 @@ namespace Js
|
|
|
// Declare fretest/debug properties here since otherwise it can cause
|
|
|
// a mismatch between fre mshtml and fretest jscript9 causing undefined behavior
|
|
|
|
|
|
- DynamicType * debugDisposableObjectType;
|
|
|
- DynamicType * debugFuncExecutorInDisposeObjectType;
|
|
|
+ Field(DynamicType *) debugDisposableObjectType;
|
|
|
+ Field(DynamicType *) debugFuncExecutorInDisposeObjectType;
|
|
|
#endif
|
|
|
|
|
|
void InitializePrototypes();
|
|
|
@@ -1296,7 +1296,7 @@ namespace Js
|
|
|
#endif
|
|
|
|
|
|
JavascriptFunction* EnsureArrayPrototypeValuesFunction();
|
|
|
-
|
|
|
+
|
|
|
|
|
|
public:
|
|
|
virtual void Finalize(bool isShutdown) override
|
|
|
@@ -1313,7 +1313,7 @@ namespace Js
|
|
|
#endif
|
|
|
private:
|
|
|
typedef JsUtil::BaseHashSet<Js::PropertyRecord const *, Recycler, PowerOf2SizePolicy> ReferencedPropertyRecordHashSet;
|
|
|
- ReferencedPropertyRecordHashSet* referencedPropertyRecords;
|
|
|
+ Field(ReferencedPropertyRecordHashSet*) referencedPropertyRecords;
|
|
|
|
|
|
ReferencedPropertyRecordHashSet * EnsureReferencedPropertyRecordList()
|
|
|
{
|