JsBuiltInEngineInterfaceExtensionObject.h 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Copyright (c) 2021 ChakraCore Project Contributors. All rights reserved.
  4. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  5. //-------------------------------------------------------------------------------------------------------
  6. #pragma once
  7. #ifdef ENABLE_JS_BUILTINS
  8. namespace Js
  9. {
  10. #define enum_file(class, type, obj) class##_##type,
  11. typedef enum {
  12. JsBuiltIns(enum_file)
  13. } JsBuiltInFile;
  14. #undef enum_file
  15. class JsBuiltInEngineInterfaceExtensionObject : public EngineExtensionObjectBase
  16. {
  17. public:
  18. JsBuiltInEngineInterfaceExtensionObject(ScriptContext* scriptContext);
  19. void Initialize();
  20. void InitializePrototypes(ScriptContext * scriptContext);
  21. void InjectJsBuiltInLibraryCode(ScriptContext * scriptContext, JsBuiltInFile file);
  22. static bool __cdecl InitializeJsBuiltInNativeInterfaces(DynamicObject* intlNativeInterfaces, DeferredTypeHandlerBase * typeHandler, DeferredInitializeMode mode);
  23. #if DBG
  24. void DumpByteCode() override;
  25. #endif
  26. class EntryInfo
  27. {
  28. public:
  29. static NoProfileFunctionInfo JsBuiltIn_RegisterChakraLibraryFunction;
  30. static NoProfileFunctionInfo JsBuiltIn_RegisterFunction;
  31. static NoProfileFunctionInfo JsBuiltIn_Internal_GetLength;
  32. static NoProfileFunctionInfo JsBuiltIn_Internal_GetIteratorPrototype;
  33. static NoProfileFunctionInfo JsBuiltIn_Internal_InitInternalProperties;
  34. static NoProfileFunctionInfo JsBuiltIn_Internal_ToLengthFunction;
  35. static NoProfileFunctionInfo JsBuiltIn_Internal_ToIntegerFunction;
  36. static NoProfileFunctionInfo JsBuiltIn_Internal_ArraySpeciesCreate;
  37. static NoProfileFunctionInfo JsBuiltIn_Internal_ArrayCreateDataPropertyOrThrow;
  38. };
  39. private:
  40. Field(DynamicObject*) builtInNativeInterfaces;
  41. #define BuiltInFunctionBody(class, type, obj) Field(FunctionBody*) jsBuiltIn##class##_##type##Bytecode = nullptr;
  42. JsBuiltIns(BuiltInFunctionBody)
  43. #undef BuiltInFunctionBody
  44. Field(JsBuiltInFile) current;
  45. Field(bool) wasInitialized = false;
  46. Field(SRCINFO*) sourceInfo = nullptr;
  47. void EnsureSourceInfo();
  48. void JsBuiltInEngineInterfaceExtensionObject::DumpByteCode(JsBuiltInFile file);
  49. static Var EntryJsBuiltIn_RegisterChakraLibraryFunction(RecyclableObject* function, CallInfo callInfo, ...);
  50. static Var EntryJsBuiltIn_RegisterFunction(RecyclableObject* function, CallInfo callInfo, ...);
  51. static Var EntryJsBuiltIn_Internal_GetLength(RecyclableObject* function, CallInfo callInfo, ...);
  52. static Var EntryJsBuiltIn_Internal_GetIteratorPrototype(RecyclableObject* function, CallInfo callInfo, ...);
  53. static Var EntryJsBuiltIn_Internal_InitInternalProperties(RecyclableObject* function, CallInfo callInfo, ...);
  54. static Var EntryJsBuiltIn_Internal_ToLengthFunction(RecyclableObject* function, CallInfo callInfo, ...);
  55. static Var EntryJsBuiltIn_Internal_ToIntegerFunction(RecyclableObject* function, CallInfo callInfo, ...);
  56. static Var EntryJsBuiltIn_Internal_ArraySpeciesCreate(RecyclableObject* function, CallInfo callInfo, ...);
  57. static Var EntryJsBuiltIn_Internal_ArrayCreateDataPropertyOrThrow(RecyclableObject* function, CallInfo callInfo, ...);
  58. };
  59. }
  60. #endif // ENABLE_JS_BUILTINS