| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Copyright (c) 2021 ChakraCore Project Contributors. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #pragma once
- #ifdef ENABLE_JS_BUILTINS
- namespace Js
- {
- #define enum_file(class, type, obj) class##_##type,
- typedef enum {
- JsBuiltIns(enum_file)
- } JsBuiltInFile;
- #undef enum_file
- class JsBuiltInEngineInterfaceExtensionObject : public EngineExtensionObjectBase
- {
- public:
- JsBuiltInEngineInterfaceExtensionObject(ScriptContext* scriptContext);
- void Initialize();
- void InitializePrototypes(ScriptContext * scriptContext);
- void InjectJsBuiltInLibraryCode(ScriptContext * scriptContext, JsBuiltInFile file);
- static bool __cdecl InitializeJsBuiltInNativeInterfaces(DynamicObject* intlNativeInterfaces, DeferredTypeHandlerBase * typeHandler, DeferredInitializeMode mode);
- #if DBG
- void DumpByteCode() override;
- #endif
- class EntryInfo
- {
- public:
- static NoProfileFunctionInfo JsBuiltIn_RegisterChakraLibraryFunction;
- static NoProfileFunctionInfo JsBuiltIn_RegisterFunction;
- static NoProfileFunctionInfo JsBuiltIn_Internal_GetLength;
- static NoProfileFunctionInfo JsBuiltIn_Internal_GetIteratorPrototype;
- static NoProfileFunctionInfo JsBuiltIn_Internal_InitInternalProperties;
- static NoProfileFunctionInfo JsBuiltIn_Internal_ToLengthFunction;
- static NoProfileFunctionInfo JsBuiltIn_Internal_ToIntegerFunction;
- static NoProfileFunctionInfo JsBuiltIn_Internal_ArraySpeciesCreate;
- static NoProfileFunctionInfo JsBuiltIn_Internal_ArrayCreateDataPropertyOrThrow;
- };
- private:
- Field(DynamicObject*) builtInNativeInterfaces;
- #define BuiltInFunctionBody(class, type, obj) Field(FunctionBody*) jsBuiltIn##class##_##type##Bytecode = nullptr;
- JsBuiltIns(BuiltInFunctionBody)
- #undef BuiltInFunctionBody
- Field(JsBuiltInFile) current;
- Field(bool) wasInitialized = false;
- Field(SRCINFO*) sourceInfo = nullptr;
- void EnsureSourceInfo();
- void JsBuiltInEngineInterfaceExtensionObject::DumpByteCode(JsBuiltInFile file);
- static Var EntryJsBuiltIn_RegisterChakraLibraryFunction(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_RegisterFunction(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_Internal_GetLength(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_Internal_GetIteratorPrototype(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_Internal_InitInternalProperties(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_Internal_ToLengthFunction(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_Internal_ToIntegerFunction(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_Internal_ArraySpeciesCreate(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryJsBuiltIn_Internal_ArrayCreateDataPropertyOrThrow(RecyclableObject* function, CallInfo callInfo, ...);
- };
- }
- #endif // ENABLE_JS_BUILTINS
|