| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_BUILTINS_BUILTINS_H_ | 5 #ifndef V8_BUILTINS_BUILTINS_H_ |
| 6 #define V8_BUILTINS_BUILTINS_H_ | 6 #define V8_BUILTINS_BUILTINS_H_ |
| 7 | 7 |
| 8 #include "src/base/flags.h" | 8 #include "src/base/flags.h" |
| 9 #include "src/handles.h" | 9 #include "src/handles.h" |
| 10 | 10 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 // TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function). | 40 // TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function). |
| 41 // Args: name, arguments count | 41 // Args: name, arguments count |
| 42 // TFS: Builtin in Turbofan, with CodeStub linkage. | 42 // TFS: Builtin in Turbofan, with CodeStub linkage. |
| 43 // Args: name, code kind, extra IC state, interface descriptor | 43 // Args: name, code kind, extra IC state, interface descriptor |
| 44 // ASM: Builtin in platform-dependent assembly. | 44 // ASM: Builtin in platform-dependent assembly. |
| 45 // Args: name | 45 // Args: name |
| 46 // ASH: Handlers implemented in platform-dependent assembly. | 46 // ASH: Handlers implemented in platform-dependent assembly. |
| 47 // Args: name, code kind, extra IC state | 47 // Args: name, code kind, extra IC state |
| 48 // DBG: Builtin in platform-dependent assembly, used by the debugger. | 48 // DBG: Builtin in platform-dependent assembly, used by the debugger. |
| 49 // Args: name | 49 // Args: name |
| 50 #define BUILTIN_LIST(CPP, API, TFJ, TFS, ASM, ASH, DBG) \ | 50 #define BUILTIN_LIST(CPP, API, TFJ, TFS, ASM, ASH, DBG) \ |
| 51 /* Handlers */ \ | 51 /* Handlers */ \ |
| 52 ASM(KeyedLoadIC_Miss) \ | 52 ASM(KeyedLoadIC_Miss) \ |
| 53 ASM(KeyedStoreIC_Miss) \ | 53 ASM(KeyedStoreIC_Miss) \ |
| 54 ASH(LoadIC_Getter_ForDeopt, LOAD_IC, kNoExtraICState) \ | 54 ASH(LoadIC_Getter_ForDeopt, LOAD_IC, kNoExtraICState) \ |
| 55 ASH(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, kNoExtraICState) \ | 55 ASH(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, kNoExtraICState) \ |
| 56 ASH(StoreIC_Setter_ForDeopt, STORE_IC, StoreICState::kStrictModeState) \ | 56 ASH(StoreIC_Setter_ForDeopt, STORE_IC, StoreICState::kStrictModeState) \ |
| 57 ASH(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, kNoExtraICState) \ | 57 ASH(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, kNoExtraICState) \ |
| 58 ASH(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, \ | 58 ASH(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, \ |
| 59 StoreICState::kStrictModeState) \ | 59 StoreICState::kStrictModeState) \ |
| 60 ASH(KeyedLoadIC_Slow, HANDLER, Code::KEYED_LOAD_IC) \ | 60 ASH(KeyedLoadIC_Slow, HANDLER, Code::KEYED_LOAD_IC) \ |
| 61 ASH(KeyedStoreIC_Slow, HANDLER, Code::KEYED_STORE_IC) \ | 61 ASH(KeyedStoreIC_Slow, HANDLER, Code::KEYED_STORE_IC) \ |
| 62 ASH(LoadIC_Normal, HANDLER, Code::LOAD_IC) \ | 62 ASH(LoadIC_Normal, HANDLER, Code::LOAD_IC) \ |
| 63 ASH(StoreIC_Normal, HANDLER, Code::STORE_IC) \ | 63 ASH(StoreIC_Normal, HANDLER, Code::STORE_IC) \ |
| 64 TFS(LoadGlobalIC_Miss, BUILTIN, kNoExtraICState, LoadGlobalWithVector) \ | 64 TFS(LoadGlobalIC_Miss, BUILTIN, kNoExtraICState, LoadGlobalWithVector) \ |
| 65 TFS(LoadGlobalIC_SlowNotInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ | 65 TFS(LoadGlobalIC_SlowNotInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ |
| 66 LoadGlobalWithVector) \ | 66 LoadGlobalWithVector) \ |
| 67 TFS(LoadGlobalIC_SlowInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ | 67 TFS(LoadGlobalIC_SlowInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ |
| 68 LoadGlobalWithVector) \ | 68 LoadGlobalWithVector) \ |
| 69 TFS(LoadIC_Miss, BUILTIN, kNoExtraICState, LoadWithVector) \ | 69 TFS(LoadIC_Miss, BUILTIN, kNoExtraICState, LoadWithVector) \ |
| 70 TFS(LoadIC_Slow, HANDLER, Code::LOAD_IC, LoadWithVector) \ | 70 TFS(LoadIC_Slow, HANDLER, Code::LOAD_IC, LoadWithVector) \ |
| 71 TFS(StoreIC_Miss, BUILTIN, kNoExtraICState, StoreWithVector) \ | 71 TFS(StoreIC_Miss, BUILTIN, kNoExtraICState, StoreWithVector) \ |
| 72 TFS(StoreIC_SlowSloppy, HANDLER, Code::STORE_IC, StoreWithVector) \ | 72 TFS(StoreIC_SlowSloppy, HANDLER, Code::STORE_IC, StoreWithVector) \ |
| 73 TFS(StoreIC_SlowStrict, HANDLER, Code::STORE_IC, StoreWithVector) \ | 73 TFS(StoreIC_SlowStrict, HANDLER, Code::STORE_IC, StoreWithVector) \ |
| 74 /* Code aging */ \ | 74 \ |
| 75 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, ASM) \ | 75 /* Code aging */ \ |
| 76 /* Calls */ \ | 76 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, ASM) \ |
| 77 ASM(ArgumentsAdaptorTrampoline) \ | 77 \ |
| 78 ASM(CallFunction_ReceiverIsNullOrUndefined) \ | 78 /* Calls */ \ |
| 79 ASM(CallFunction_ReceiverIsNotNullOrUndefined) \ | 79 ASM(ArgumentsAdaptorTrampoline) \ |
| 80 ASM(CallFunction_ReceiverIsAny) \ | 80 /* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */ \ |
| 81 ASM(TailCallFunction_ReceiverIsNullOrUndefined) \ | 81 ASM(CallFunction_ReceiverIsNullOrUndefined) \ |
| 82 ASM(TailCallFunction_ReceiverIsNotNullOrUndefined) \ | 82 ASM(CallFunction_ReceiverIsNotNullOrUndefined) \ |
| 83 ASM(TailCallFunction_ReceiverIsAny) \ | 83 ASM(CallFunction_ReceiverIsAny) \ |
| 84 ASM(CallBoundFunction) \ | 84 ASM(TailCallFunction_ReceiverIsNullOrUndefined) \ |
| 85 ASM(TailCallBoundFunction) \ | 85 ASM(TailCallFunction_ReceiverIsNotNullOrUndefined) \ |
| 86 ASM(Call_ReceiverIsNullOrUndefined) \ | 86 ASM(TailCallFunction_ReceiverIsAny) \ |
| 87 ASM(Call_ReceiverIsNotNullOrUndefined) \ | 87 /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */ \ |
| 88 ASM(Call_ReceiverIsAny) \ | 88 ASM(CallBoundFunction) \ |
| 89 ASM(TailCall_ReceiverIsNullOrUndefined) \ | 89 ASM(TailCallBoundFunction) \ |
| 90 ASM(TailCall_ReceiverIsNotNullOrUndefined) \ | 90 /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */ \ |
| 91 ASM(TailCall_ReceiverIsAny) \ | 91 ASM(Call_ReceiverIsNullOrUndefined) \ |
| 92 /* Construct */ \ | 92 ASM(Call_ReceiverIsNotNullOrUndefined) \ |
| 93 ASM(ConstructFunction) \ | 93 ASM(Call_ReceiverIsAny) \ |
| 94 ASM(ConstructBoundFunction) \ | 94 ASM(TailCall_ReceiverIsNullOrUndefined) \ |
| 95 ASM(ConstructedNonConstructable) \ | 95 ASM(TailCall_ReceiverIsNotNullOrUndefined) \ |
| 96 ASM(ConstructProxy) \ | 96 ASM(TailCall_ReceiverIsAny) \ |
| 97 ASM(Construct) \ | 97 \ |
| 98 ASM(JSConstructStubApi) \ | 98 /* Construct */ \ |
| 99 ASM(JSConstructStubGeneric) \ | 99 /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \ |
| 100 ASM(JSBuiltinsConstructStub) \ | 100 ASM(ConstructFunction) \ |
| 101 ASM(JSBuiltinsConstructStubForDerived) \ | 101 /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \ |
| 102 /* Apply and entries */ \ | 102 ASM(ConstructBoundFunction) \ |
| 103 ASM(Apply) \ | 103 ASM(ConstructedNonConstructable) \ |
| 104 ASM(JSEntryTrampoline) \ | 104 /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \ |
| 105 ASM(JSConstructEntryTrampoline) \ | 105 ASM(ConstructProxy) \ |
| 106 ASM(ResumeGeneratorTrampoline) \ | 106 /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \ |
| 107 /* Stack and interrupt check */ \ | 107 ASM(Construct) \ |
| 108 ASM(InterruptCheck) \ | 108 ASM(JSConstructStubApi) \ |
| 109 ASM(StackCheck) \ | 109 ASM(JSConstructStubGeneric) \ |
| 110 /* Interpreter */ \ | 110 ASM(JSBuiltinsConstructStub) \ |
| 111 ASM(InterpreterEntryTrampoline) \ | 111 ASM(JSBuiltinsConstructStubForDerived) \ |
| 112 ASM(InterpreterMarkBaselineOnReturn) \ | 112 \ |
| 113 ASM(InterpreterPushArgsAndCallFunction) \ | 113 /* Apply and entries */ \ |
| 114 ASM(InterpreterPushArgsAndTailCallFunction) \ | 114 ASM(Apply) \ |
| 115 ASM(InterpreterPushArgsAndCall) \ | 115 ASM(JSEntryTrampoline) \ |
| 116 ASM(InterpreterPushArgsAndTailCall) \ | 116 ASM(JSConstructEntryTrampoline) \ |
| 117 ASM(InterpreterPushArgsAndConstruct) \ | 117 ASM(ResumeGeneratorTrampoline) \ |
| 118 ASM(InterpreterEnterBytecodeDispatch) \ | 118 \ |
| 119 /* Code life-cycle */ \ | 119 /* Stack and interrupt check */ \ |
| 120 ASM(CompileLazy) \ | 120 ASM(InterruptCheck) \ |
| 121 ASM(CompileBaseline) \ | 121 ASM(StackCheck) \ |
| 122 ASM(CompileOptimized) \ | 122 \ |
| 123 ASM(CompileOptimizedConcurrent) \ | 123 /* Interpreter */ \ |
| 124 ASM(InOptimizationQueue) \ | 124 ASM(InterpreterEntryTrampoline) \ |
| 125 ASM(InstantiateAsmJs) \ | 125 ASM(InterpreterMarkBaselineOnReturn) \ |
| 126 ASM(MarkCodeAsToBeExecutedOnce) \ | 126 ASM(InterpreterPushArgsAndCallFunction) \ |
| 127 ASM(MarkCodeAsExecutedOnce) \ | 127 ASM(InterpreterPushArgsAndTailCallFunction) \ |
| 128 ASM(MarkCodeAsExecutedTwice) \ | 128 ASM(InterpreterPushArgsAndCall) \ |
| 129 ASM(NotifyDeoptimized) \ | 129 ASM(InterpreterPushArgsAndTailCall) \ |
| 130 ASM(NotifySoftDeoptimized) \ | 130 ASM(InterpreterPushArgsAndConstruct) \ |
| 131 ASM(NotifyLazyDeoptimized) \ | 131 ASM(InterpreterEnterBytecodeDispatch) \ |
| 132 ASM(NotifyStubFailure) \ | 132 \ |
| 133 ASM(NotifyStubFailureSaveDoubles) \ | 133 /* Code life-cycle */ \ |
| 134 ASM(OnStackReplacement) \ | 134 ASM(CompileLazy) \ |
| 135 /* API callback handling */ \ | 135 ASM(CompileBaseline) \ |
| 136 API(HandleApiCall) \ | 136 ASM(CompileOptimized) \ |
| 137 API(HandleApiCallAsFunction) \ | 137 ASM(CompileOptimizedConcurrent) \ |
| 138 API(HandleApiCallAsConstructor) \ | 138 ASM(InOptimizationQueue) \ |
| 139 ASM(HandleFastApiCall) \ | 139 ASM(InstantiateAsmJs) \ |
| 140 /* Adapters for Turbofan into runtime */ \ | 140 ASM(MarkCodeAsToBeExecutedOnce) \ |
| 141 ASM(AllocateInNewSpace) \ | 141 ASM(MarkCodeAsExecutedOnce) \ |
| 142 ASM(AllocateInOldSpace) \ | 142 ASM(MarkCodeAsExecutedTwice) \ |
| 143 /* Debugger */ \ | 143 ASM(NotifyDeoptimized) \ |
| 144 DBG(Return_DebugBreak) \ | 144 ASM(NotifySoftDeoptimized) \ |
| 145 DBG(Slot_DebugBreak) \ | 145 ASM(NotifyLazyDeoptimized) \ |
| 146 DBG(FrameDropper_LiveEdit) \ | 146 ASM(NotifyStubFailure) \ |
| 147 /* Type conversions */ \ | 147 ASM(NotifyStubFailureSaveDoubles) \ |
| 148 TFS(OrdinaryToPrimitive_Number, BUILTIN, kNoExtraICState, TypeConversion) \ | 148 ASM(OnStackReplacement) \ |
| 149 TFS(OrdinaryToPrimitive_String, BUILTIN, kNoExtraICState, TypeConversion) \ | 149 \ |
| 150 TFS(NonPrimitiveToPrimitive_Default, BUILTIN, kNoExtraICState, \ | 150 /* API callback handling */ \ |
| 151 TypeConversion) \ | 151 API(HandleApiCall) \ |
| 152 TFS(NonPrimitiveToPrimitive_Number, BUILTIN, kNoExtraICState, \ | 152 API(HandleApiCallAsFunction) \ |
| 153 TypeConversion) \ | 153 API(HandleApiCallAsConstructor) \ |
| 154 TFS(NonPrimitiveToPrimitive_String, BUILTIN, kNoExtraICState, \ | 154 ASM(HandleFastApiCall) \ |
| 155 TypeConversion) \ | 155 \ |
| 156 ASM(StringToNumber) \ | 156 /* Adapters for Turbofan into runtime */ \ |
| 157 TFS(NonNumberToNumber, BUILTIN, kNoExtraICState, TypeConversion) \ | 157 ASM(AllocateInNewSpace) \ |
| 158 ASM(ToNumber) \ | 158 ASM(AllocateInOldSpace) \ |
| 159 \ | 159 \ |
| 160 /* Built-in functions for Javascript */ \ | 160 /* Debugger */ \ |
| 161 /* Special internal builtins */ \ | 161 DBG(Return_DebugBreak) \ |
| 162 CPP(EmptyFunction) \ | 162 DBG(Slot_DebugBreak) \ |
| 163 CPP(Illegal) \ | 163 DBG(FrameDropper_LiveEdit) \ |
| 164 CPP(RestrictedFunctionPropertiesThrower) \ | 164 \ |
| 165 CPP(RestrictedStrictArgumentsPropertiesThrower) \ | 165 /* Type conversions */ \ |
| 166 /* Array */ \ | 166 TFS(OrdinaryToPrimitive_Number, BUILTIN, kNoExtraICState, TypeConversion) \ |
| 167 ASM(ArrayCode) \ | 167 TFS(OrdinaryToPrimitive_String, BUILTIN, kNoExtraICState, TypeConversion) \ |
| 168 ASM(InternalArrayCode) \ | 168 TFS(NonPrimitiveToPrimitive_Default, BUILTIN, kNoExtraICState, \ |
| 169 CPP(ArrayConcat) \ | 169 TypeConversion) \ |
| 170 TFJ(ArrayIsArray, 2) \ | 170 TFS(NonPrimitiveToPrimitive_Number, BUILTIN, kNoExtraICState, \ |
| 171 CPP(ArrayPop) \ | 171 TypeConversion) \ |
| 172 CPP(ArrayPush) \ | 172 TFS(NonPrimitiveToPrimitive_String, BUILTIN, kNoExtraICState, \ |
| 173 CPP(ArrayShift) \ | 173 TypeConversion) \ |
| 174 CPP(ArraySlice) \ | 174 ASM(StringToNumber) \ |
| 175 CPP(ArraySplice) \ | 175 TFS(NonNumberToNumber, BUILTIN, kNoExtraICState, TypeConversion) \ |
| 176 CPP(ArrayUnshift) \ | 176 ASM(ToNumber) \ |
| 177 /* ArrayBuffer */ \ | 177 \ |
| 178 CPP(ArrayBufferConstructor) \ | 178 /* Built-in functions for Javascript */ \ |
| 179 CPP(ArrayBufferConstructor_ConstructStub) \ | 179 /* Special internal builtins */ \ |
| 180 CPP(ArrayBufferPrototypeGetByteLength) \ | 180 CPP(EmptyFunction) \ |
| 181 CPP(ArrayBufferIsView) \ | 181 CPP(Illegal) \ |
| 182 /* Boolean */ \ | 182 CPP(RestrictedFunctionPropertiesThrower) \ |
| 183 CPP(BooleanConstructor) \ | 183 CPP(RestrictedStrictArgumentsPropertiesThrower) \ |
| 184 CPP(BooleanConstructor_ConstructStub) \ | 184 \ |
| 185 TFJ(BooleanPrototypeToString, 1) \ | 185 /* Array */ \ |
| 186 TFJ(BooleanPrototypeValueOf, 1) \ | 186 ASM(ArrayCode) \ |
| 187 /* DataView */ \ | 187 ASM(InternalArrayCode) \ |
| 188 CPP(DataViewConstructor) \ | 188 CPP(ArrayConcat) \ |
| 189 CPP(DataViewConstructor_ConstructStub) \ | 189 /* ES6 section 22.1.2.2 Array.isArray */ \ |
| 190 CPP(DataViewPrototypeGetBuffer) \ | 190 TFJ(ArrayIsArray, 2) \ |
| 191 CPP(DataViewPrototypeGetByteLength) \ | 191 CPP(ArrayPop) \ |
| 192 CPP(DataViewPrototypeGetByteOffset) \ | 192 CPP(ArrayPush) \ |
| 193 /* Date */ \ | 193 CPP(ArrayShift) \ |
| 194 CPP(DateConstructor) \ | 194 CPP(ArraySlice) \ |
| 195 CPP(DateConstructor_ConstructStub) \ | 195 CPP(ArraySplice) \ |
| 196 CPP(DateNow) \ | 196 CPP(ArrayUnshift) \ |
| 197 CPP(DateParse) \ | 197 \ |
| 198 CPP(DateUTC) \ | 198 /* ArrayBuffer */ \ |
| 199 CPP(DatePrototypeSetDate) \ | 199 CPP(ArrayBufferConstructor) \ |
| 200 CPP(DatePrototypeSetFullYear) \ | 200 CPP(ArrayBufferConstructor_ConstructStub) \ |
| 201 CPP(DatePrototypeSetHours) \ | 201 CPP(ArrayBufferPrototypeGetByteLength) \ |
| 202 CPP(DatePrototypeSetMilliseconds) \ | 202 CPP(ArrayBufferIsView) \ |
| 203 CPP(DatePrototypeSetMinutes) \ | 203 \ |
| 204 CPP(DatePrototypeSetMonth) \ | 204 /* Boolean */ \ |
| 205 CPP(DatePrototypeSetSeconds) \ | 205 CPP(BooleanConstructor) \ |
| 206 CPP(DatePrototypeSetTime) \ | 206 CPP(BooleanConstructor_ConstructStub) \ |
| 207 CPP(DatePrototypeSetUTCDate) \ | 207 /* ES6 section 19.3.3.2 Boolean.prototype.toString ( ) */ \ |
| 208 CPP(DatePrototypeSetUTCFullYear) \ | 208 TFJ(BooleanPrototypeToString, 1) \ |
| 209 CPP(DatePrototypeSetUTCHours) \ | 209 /* ES6 section 19.3.3.3 Boolean.prototype.valueOf ( ) */ \ |
| 210 CPP(DatePrototypeSetUTCMilliseconds) \ | 210 TFJ(BooleanPrototypeValueOf, 1) \ |
| 211 CPP(DatePrototypeSetUTCMinutes) \ | 211 \ |
| 212 CPP(DatePrototypeSetUTCMonth) \ | 212 /* DataView */ \ |
| 213 CPP(DatePrototypeSetUTCSeconds) \ | 213 CPP(DataViewConstructor) \ |
| 214 CPP(DatePrototypeToDateString) \ | 214 CPP(DataViewConstructor_ConstructStub) \ |
| 215 CPP(DatePrototypeToISOString) \ | 215 CPP(DataViewPrototypeGetBuffer) \ |
| 216 CPP(DatePrototypeToPrimitive) \ | 216 CPP(DataViewPrototypeGetByteLength) \ |
| 217 CPP(DatePrototypeToUTCString) \ | 217 CPP(DataViewPrototypeGetByteOffset) \ |
| 218 CPP(DatePrototypeToString) \ | 218 \ |
| 219 CPP(DatePrototypeToTimeString) \ | 219 /* Date */ \ |
| 220 CPP(DatePrototypeValueOf) \ | 220 CPP(DateConstructor) \ |
| 221 ASM(DatePrototypeGetDate) \ | 221 CPP(DateConstructor_ConstructStub) \ |
| 222 ASM(DatePrototypeGetDay) \ | 222 /* ES6 section 20.3.4.2 Date.prototype.getDate ( ) */ \ |
| 223 ASM(DatePrototypeGetFullYear) \ | 223 ASM(DatePrototypeGetDate) \ |
| 224 ASM(DatePrototypeGetHours) \ | 224 /* ES6 section 20.3.4.3 Date.prototype.getDay ( ) */ \ |
| 225 ASM(DatePrototypeGetMilliseconds) \ | 225 ASM(DatePrototypeGetDay) \ |
| 226 ASM(DatePrototypeGetMinutes) \ | 226 /* ES6 section 20.3.4.4 Date.prototype.getFullYear ( ) */ \ |
| 227 ASM(DatePrototypeGetMonth) \ | 227 ASM(DatePrototypeGetFullYear) \ |
| 228 ASM(DatePrototypeGetSeconds) \ | 228 /* ES6 section 20.3.4.5 Date.prototype.getHours ( ) */ \ |
| 229 ASM(DatePrototypeGetTime) \ | 229 ASM(DatePrototypeGetHours) \ |
| 230 ASM(DatePrototypeGetTimezoneOffset) \ | 230 /* ES6 section 20.3.4.6 Date.prototype.getMilliseconds ( ) */ \ |
| 231 ASM(DatePrototypeGetUTCDate) \ | 231 ASM(DatePrototypeGetMilliseconds) \ |
| 232 ASM(DatePrototypeGetUTCDay) \ | 232 /* ES6 section 20.3.4.7 Date.prototype.getMinutes ( ) */ \ |
| 233 ASM(DatePrototypeGetUTCFullYear) \ | 233 ASM(DatePrototypeGetMinutes) \ |
| 234 ASM(DatePrototypeGetUTCHours) \ | 234 /* ES6 section 20.3.4.8 Date.prototype.getMonth */ \ |
| 235 ASM(DatePrototypeGetUTCMilliseconds) \ | 235 ASM(DatePrototypeGetMonth) \ |
| 236 ASM(DatePrototypeGetUTCMinutes) \ | 236 /* ES6 section 20.3.4.9 Date.prototype.getSeconds ( ) */ \ |
| 237 ASM(DatePrototypeGetUTCMonth) \ | 237 ASM(DatePrototypeGetSeconds) \ |
| 238 ASM(DatePrototypeGetUTCSeconds) \ | 238 /* ES6 section 20.3.4.10 Date.prototype.getTime ( ) */ \ |
| 239 CPP(DatePrototypeGetYear) \ | 239 ASM(DatePrototypeGetTime) \ |
| 240 CPP(DatePrototypeSetYear) \ | 240 /* ES6 section 20.3.4.11 Date.prototype.getTimezoneOffset ( ) */ \ |
| 241 CPP(DatePrototypeToJson) \ | 241 ASM(DatePrototypeGetTimezoneOffset) \ |
| 242 /* Function */ \ | 242 /* ES6 section 20.3.4.12 Date.prototype.getUTCDate ( ) */ \ |
| 243 CPP(FunctionConstructor) \ | 243 ASM(DatePrototypeGetUTCDate) \ |
| 244 ASM(FunctionPrototypeApply) \ | 244 /* ES6 section 20.3.4.13 Date.prototype.getUTCDay ( ) */ \ |
| 245 CPP(FunctionPrototypeBind) \ | 245 ASM(DatePrototypeGetUTCDay) \ |
| 246 ASM(FunctionPrototypeCall) \ | 246 /* ES6 section 20.3.4.14 Date.prototype.getUTCFullYear ( ) */ \ |
| 247 TFJ(FunctionPrototypeHasInstance, 2) \ | 247 ASM(DatePrototypeGetUTCFullYear) \ |
| 248 CPP(FunctionPrototypeToString) \ | 248 /* ES6 section 20.3.4.15 Date.prototype.getUTCHours ( ) */ \ |
| 249 /* Generator and Async */ \ | 249 ASM(DatePrototypeGetUTCHours) \ |
| 250 CPP(GeneratorFunctionConstructor) \ | 250 /* ES6 section 20.3.4.16 Date.prototype.getUTCMilliseconds ( ) */ \ |
| 251 TFJ(GeneratorPrototypeNext, 2) \ | 251 ASM(DatePrototypeGetUTCMilliseconds) \ |
| 252 TFJ(GeneratorPrototypeReturn, 2) \ | 252 /* ES6 section 20.3.4.17 Date.prototype.getUTCMinutes ( ) */ \ |
| 253 TFJ(GeneratorPrototypeThrow, 2) \ | 253 ASM(DatePrototypeGetUTCMinutes) \ |
| 254 CPP(AsyncFunctionConstructor) \ | 254 /* ES6 section 20.3.4.18 Date.prototype.getUTCMonth ( ) */ \ |
| 255 /* Encode and decode */ \ | 255 ASM(DatePrototypeGetUTCMonth) \ |
| 256 CPP(GlobalDecodeURI) \ | 256 /* ES6 section 20.3.4.19 Date.prototype.getUTCSeconds ( ) */ \ |
| 257 CPP(GlobalDecodeURIComponent) \ | 257 ASM(DatePrototypeGetUTCSeconds) \ |
| 258 CPP(GlobalEncodeURI) \ | 258 CPP(DatePrototypeGetYear) \ |
| 259 CPP(GlobalEncodeURIComponent) \ | 259 CPP(DatePrototypeSetYear) \ |
| 260 CPP(GlobalEscape) \ | 260 CPP(DateNow) \ |
| 261 CPP(GlobalUnescape) \ | 261 CPP(DateParse) \ |
| 262 /* Eval */ \ | 262 CPP(DatePrototypeSetDate) \ |
| 263 CPP(GlobalEval) \ | 263 CPP(DatePrototypeSetFullYear) \ |
| 264 /* JSON */ \ | 264 CPP(DatePrototypeSetHours) \ |
| 265 CPP(JsonParse) \ | 265 CPP(DatePrototypeSetMilliseconds) \ |
| 266 CPP(JsonStringify) \ | 266 CPP(DatePrototypeSetMinutes) \ |
| 267 /* Math */ \ | 267 CPP(DatePrototypeSetMonth) \ |
| 268 TFJ(MathAcos, 2) \ | 268 CPP(DatePrototypeSetSeconds) \ |
| 269 TFJ(MathAcosh, 2) \ | 269 CPP(DatePrototypeSetTime) \ |
| 270 TFJ(MathAsin, 2) \ | 270 CPP(DatePrototypeSetUTCDate) \ |
| 271 TFJ(MathAsinh, 2) \ | 271 CPP(DatePrototypeSetUTCFullYear) \ |
| 272 TFJ(MathAtan, 2) \ | 272 CPP(DatePrototypeSetUTCHours) \ |
| 273 TFJ(MathAtanh, 2) \ | 273 CPP(DatePrototypeSetUTCMilliseconds) \ |
| 274 TFJ(MathAtan2, 3) \ | 274 CPP(DatePrototypeSetUTCMinutes) \ |
| 275 TFJ(MathCeil, 2) \ | 275 CPP(DatePrototypeSetUTCMonth) \ |
| 276 TFJ(MathCbrt, 2) \ | 276 CPP(DatePrototypeSetUTCSeconds) \ |
| 277 TFJ(MathAbs, 2) \ | 277 CPP(DatePrototypeToDateString) \ |
| 278 TFJ(MathExpm1, 2) \ | 278 CPP(DatePrototypeToISOString) \ |
| 279 TFJ(MathClz32, 2) \ | 279 CPP(DatePrototypeToPrimitive) \ |
| 280 TFJ(MathCos, 2) \ | 280 CPP(DatePrototypeToUTCString) \ |
| 281 TFJ(MathCosh, 2) \ | 281 CPP(DatePrototypeToString) \ |
| 282 TFJ(MathExp, 2) \ | 282 CPP(DatePrototypeToTimeString) \ |
| 283 TFJ(MathFloor, 2) \ | 283 CPP(DatePrototypeValueOf) \ |
| 284 TFJ(MathFround, 2) \ | 284 CPP(DatePrototypeToJson) \ |
| 285 CPP(MathHypot) \ | 285 CPP(DateUTC) \ |
| 286 TFJ(MathImul, 3) \ | 286 \ |
| 287 TFJ(MathLog, 2) \ | 287 /* Function */ \ |
| 288 TFJ(MathLog1p, 2) \ | 288 CPP(FunctionConstructor) \ |
| 289 TFJ(MathLog10, 2) \ | 289 ASM(FunctionPrototypeApply) \ |
| 290 TFJ(MathLog2, 2) \ | 290 CPP(FunctionPrototypeBind) \ |
| 291 ASM(MathMax) \ | 291 ASM(FunctionPrototypeCall) \ |
| 292 ASM(MathMin) \ | 292 /* ES6 section 19.2.3.6 Function.prototype [ @@hasInstance ] ( V ) */ \ |
| 293 TFJ(MathRound, 2) \ | 293 TFJ(FunctionPrototypeHasInstance, 2) \ |
| 294 TFJ(MathPow, 3) \ | 294 CPP(FunctionPrototypeToString) \ |
| 295 TFJ(MathSign, 2) \ | 295 \ |
| 296 TFJ(MathSin, 2) \ | 296 /* Generator and Async */ \ |
| 297 TFJ(MathSinh, 2) \ | 297 CPP(GeneratorFunctionConstructor) \ |
| 298 TFJ(MathTan, 2) \ | 298 /* ES6 section 25.3.1.2 Generator.prototype.next ( value ) */ \ |
| 299 TFJ(MathTanh, 2) \ | 299 TFJ(GeneratorPrototypeNext, 2) \ |
| 300 TFJ(MathSqrt, 2) \ | 300 /* ES6 section 25.3.1.3 Generator.prototype.return ( value ) */ \ |
| 301 TFJ(MathTrunc, 2) \ | 301 TFJ(GeneratorPrototypeReturn, 2) \ |
| 302 /* Number */ \ | 302 /* ES6 section 25.3.1.4 Generator.prototype.throw ( exception ) */ \ |
| 303 ASM(NumberConstructor) \ | 303 TFJ(GeneratorPrototypeThrow, 2) \ |
| 304 ASM(NumberConstructor_ConstructStub) \ | 304 CPP(AsyncFunctionConstructor) \ |
| 305 CPP(NumberPrototypeToExponential) \ | 305 \ |
| 306 CPP(NumberPrototypeToFixed) \ | 306 /* Encode and decode */ \ |
| 307 CPP(NumberPrototypeToLocaleString) \ | 307 CPP(GlobalDecodeURI) \ |
| 308 CPP(NumberPrototypeToPrecision) \ | 308 CPP(GlobalDecodeURIComponent) \ |
| 309 CPP(NumberPrototypeToString) \ | 309 CPP(GlobalEncodeURI) \ |
| 310 TFJ(NumberPrototypeValueOf, 1) \ | 310 CPP(GlobalEncodeURIComponent) \ |
| 311 /* Object */ \ | 311 CPP(GlobalEscape) \ |
| 312 CPP(ObjectAssign) \ | 312 CPP(GlobalUnescape) \ |
| 313 CPP(ObjectCreate) \ | 313 \ |
| 314 CPP(ObjectDefineGetter) \ | 314 /* Eval */ \ |
| 315 CPP(ObjectDefineProperties) \ | 315 CPP(GlobalEval) \ |
| 316 CPP(ObjectDefineProperty) \ | 316 \ |
| 317 CPP(ObjectDefineSetter) \ | 317 /* JSON */ \ |
| 318 CPP(ObjectEntries) \ | 318 CPP(JsonParse) \ |
| 319 CPP(ObjectFreeze) \ | 319 CPP(JsonStringify) \ |
| 320 CPP(ObjectGetOwnPropertyDescriptor) \ | 320 \ |
| 321 CPP(ObjectGetOwnPropertyDescriptors) \ | 321 /* Math */ \ |
| 322 CPP(ObjectGetOwnPropertyNames) \ | 322 /* ES6 section 20.2.2.1 Math.abs ( x ) */ \ |
| 323 CPP(ObjectGetOwnPropertySymbols) \ | 323 TFJ(MathAbs, 2) \ |
| 324 CPP(ObjectGetPrototypeOf) \ | 324 /* ES6 section 20.2.2.2 Math.acos ( x ) */ \ |
| 325 TFJ(ObjectHasOwnProperty, 2) \ | 325 TFJ(MathAcos, 2) \ |
| 326 CPP(ObjectIs) \ | 326 /* ES6 section 20.2.2.3 Math.acosh ( x ) */ \ |
| 327 CPP(ObjectIsExtensible) \ | 327 TFJ(MathAcosh, 2) \ |
| 328 CPP(ObjectIsFrozen) \ | 328 /* ES6 section 20.2.2.4 Math.asin ( x ) */ \ |
| 329 CPP(ObjectIsSealed) \ | 329 TFJ(MathAsin, 2) \ |
| 330 CPP(ObjectKeys) \ | 330 /* ES6 section 20.2.2.5 Math.asinh ( x ) */ \ |
| 331 CPP(ObjectLookupGetter) \ | 331 TFJ(MathAsinh, 2) \ |
| 332 CPP(ObjectLookupSetter) \ | 332 /* ES6 section 20.2.2.6 Math.atan ( x ) */ \ |
| 333 CPP(ObjectPreventExtensions) \ | 333 TFJ(MathAtan, 2) \ |
| 334 TFJ(ObjectProtoToString, 1) \ | 334 /* ES6 section 20.2.2.7 Math.atanh ( x ) */ \ |
| 335 CPP(ObjectPrototypePropertyIsEnumerable) \ | 335 TFJ(MathAtanh, 2) \ |
| 336 CPP(ObjectSeal) \ | 336 /* ES6 section 20.2.2.8 Math.atan2 ( y, x ) */ \ |
| 337 CPP(ObjectValues) \ | 337 TFJ(MathAtan2, 3) \ |
| 338 /* Proxy */ \ | 338 /* ES6 section 20.2.2.9 Math.cbrt ( x ) */ \ |
| 339 CPP(ProxyConstructor) \ | 339 TFJ(MathCbrt, 2) \ |
| 340 CPP(ProxyConstructor_ConstructStub) \ | 340 /* ES6 section 20.2.2.10 Math.ceil ( x ) */ \ |
| 341 /* Reflect */ \ | 341 TFJ(MathCeil, 2) \ |
| 342 ASM(ReflectApply) \ | 342 /* ES6 section 20.2.2.11 Math.clz32 ( x ) */ \ |
| 343 ASM(ReflectConstruct) \ | 343 TFJ(MathClz32, 2) \ |
| 344 CPP(ReflectDefineProperty) \ | 344 /* ES6 section 20.2.2.12 Math.cos ( x ) */ \ |
| 345 CPP(ReflectDeleteProperty) \ | 345 TFJ(MathCos, 2) \ |
| 346 CPP(ReflectGet) \ | 346 /* ES6 section 20.2.2.13 Math.cosh ( x ) */ \ |
| 347 CPP(ReflectGetOwnPropertyDescriptor) \ | 347 TFJ(MathCosh, 2) \ |
| 348 CPP(ReflectGetPrototypeOf) \ | 348 /* ES6 section 20.2.2.14 Math.exp ( x ) */ \ |
| 349 CPP(ReflectHas) \ | 349 TFJ(MathExp, 2) \ |
| 350 CPP(ReflectIsExtensible) \ | 350 /* ES6 section 20.2.2.15 Math.expm1 ( x ) */ \ |
| 351 CPP(ReflectOwnKeys) \ | 351 TFJ(MathExpm1, 2) \ |
| 352 CPP(ReflectPreventExtensions) \ | 352 /* ES6 section 20.2.2.16 Math.floor ( x ) */ \ |
| 353 CPP(ReflectSet) \ | 353 TFJ(MathFloor, 2) \ |
| 354 CPP(ReflectSetPrototypeOf) \ | 354 /* ES6 section 20.2.2.17 Math.fround ( x ) */ \ |
| 355 /* SharedArrayBuffer */ \ | 355 TFJ(MathFround, 2) \ |
| 356 CPP(SharedArrayBufferPrototypeGetByteLength) \ | 356 /* ES6 section 20.2.2.18 Math.hypot ( value1, value2, ...values ) */ \ |
| 357 TFJ(AtomicsLoad, 3) \ | 357 CPP(MathHypot) \ |
| 358 TFJ(AtomicsStore, 4) \ | 358 /* ES6 section 20.2.2.19 Math.imul ( x, y ) */ \ |
| 359 /* String */ \ | 359 TFJ(MathImul, 3) \ |
| 360 ASM(StringConstructor) \ | 360 /* ES6 section 20.2.2.20 Math.log ( x ) */ \ |
| 361 ASM(StringConstructor_ConstructStub) \ | 361 TFJ(MathLog, 2) \ |
| 362 CPP(StringFromCodePoint) \ | 362 /* ES6 section 20.2.2.21 Math.log1p ( x ) */ \ |
| 363 TFJ(StringFromCharCode, 2) \ | 363 TFJ(MathLog1p, 2) \ |
| 364 TFJ(StringPrototypeCharAt, 2) \ | 364 /* ES6 section 20.2.2.22 Math.log10 ( x ) */ \ |
| 365 TFJ(StringPrototypeCharCodeAt, 2) \ | 365 TFJ(MathLog10, 2) \ |
| 366 TFJ(StringPrototypeToString, 1) \ | 366 /* ES6 section 20.2.2.23 Math.log2 ( x ) */ \ |
| 367 CPP(StringPrototypeTrim) \ | 367 TFJ(MathLog2, 2) \ |
| 368 CPP(StringPrototypeTrimLeft) \ | 368 /* ES6 section 20.2.2.24 Math.max ( value1, value2 , ...values ) */ \ |
| 369 CPP(StringPrototypeTrimRight) \ | 369 ASM(MathMax) \ |
| 370 TFJ(StringPrototypeValueOf, 1) \ | 370 /* ES6 section 20.2.2.25 Math.min ( value1, value2 , ...values ) */ \ |
| 371 /* Symbol */ \ | 371 ASM(MathMin) \ |
| 372 CPP(SymbolConstructor) \ | 372 /* ES6 section 20.2.2.26 Math.pow ( x, y ) */ \ |
| 373 CPP(SymbolConstructor_ConstructStub) \ | 373 TFJ(MathPow, 3) \ |
| 374 TFJ(SymbolPrototypeToPrimitive, 2) \ | 374 /* ES6 section 20.2.2.28 Math.round ( x ) */ \ |
| 375 TFJ(SymbolPrototypeToString, 1) \ | 375 TFJ(MathRound, 2) \ |
| 376 TFJ(SymbolPrototypeValueOf, 1) \ | 376 /* ES6 section 20.2.2.29 Math.sign ( x ) */ \ |
| 377 /* TypedArray */ \ | 377 TFJ(MathSign, 2) \ |
| 378 CPP(TypedArrayPrototypeBuffer) \ | 378 /* ES6 section 20.2.2.30 Math.sin ( x ) */ \ |
| 379 TFJ(TypedArrayPrototypeByteLength, 1) \ | 379 TFJ(MathSin, 2) \ |
| 380 TFJ(TypedArrayPrototypeByteOffset, 1) \ | 380 /* ES6 section 20.2.2.31 Math.sinh ( x ) */ \ |
| 381 TFJ(MathSinh, 2) \ |
| 382 /* ES6 section 20.2.2.32 Math.sqrt ( x ) */ \ |
| 383 TFJ(MathTan, 2) \ |
| 384 /* ES6 section 20.2.2.33 Math.tan ( x ) */ \ |
| 385 TFJ(MathTanh, 2) \ |
| 386 /* ES6 section 20.2.2.34 Math.tanh ( x ) */ \ |
| 387 TFJ(MathSqrt, 2) \ |
| 388 /* ES6 section 20.2.2.35 Math.trunc ( x ) */ \ |
| 389 TFJ(MathTrunc, 2) \ |
| 390 \ |
| 391 /* Number */ \ |
| 392 /* ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Call]] case */ \ |
| 393 ASM(NumberConstructor) \ |
| 394 /* ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Construct]] case */ \ |
| 395 ASM(NumberConstructor_ConstructStub) \ |
| 396 CPP(NumberPrototypeToExponential) \ |
| 397 CPP(NumberPrototypeToFixed) \ |
| 398 CPP(NumberPrototypeToLocaleString) \ |
| 399 CPP(NumberPrototypeToPrecision) \ |
| 400 CPP(NumberPrototypeToString) \ |
| 401 /* ES6 section 20.1.3.7 Number.prototype.valueOf ( ) */ \ |
| 402 TFJ(NumberPrototypeValueOf, 1) \ |
| 403 /* Object */ \ |
| 404 CPP(ObjectAssign) \ |
| 405 CPP(ObjectCreate) \ |
| 406 CPP(ObjectDefineGetter) \ |
| 407 CPP(ObjectDefineProperties) \ |
| 408 CPP(ObjectDefineProperty) \ |
| 409 CPP(ObjectDefineSetter) \ |
| 410 CPP(ObjectEntries) \ |
| 411 CPP(ObjectFreeze) \ |
| 412 CPP(ObjectGetOwnPropertyDescriptor) \ |
| 413 CPP(ObjectGetOwnPropertyDescriptors) \ |
| 414 CPP(ObjectGetOwnPropertyNames) \ |
| 415 CPP(ObjectGetOwnPropertySymbols) \ |
| 416 CPP(ObjectGetPrototypeOf) \ |
| 417 /* ES6 section 19.1.3.2 Object.prototype.hasOwnProperty */ \ |
| 418 TFJ(ObjectHasOwnProperty, 2) \ |
| 419 CPP(ObjectIs) \ |
| 420 CPP(ObjectIsExtensible) \ |
| 421 CPP(ObjectIsFrozen) \ |
| 422 CPP(ObjectIsSealed) \ |
| 423 CPP(ObjectKeys) \ |
| 424 CPP(ObjectLookupGetter) \ |
| 425 CPP(ObjectLookupSetter) \ |
| 426 CPP(ObjectPreventExtensions) \ |
| 427 /* ES6 section 19.1.3.6 Object.prototype.toString () */ \ |
| 428 TFJ(ObjectProtoToString, 1) \ |
| 429 CPP(ObjectPrototypePropertyIsEnumerable) \ |
| 430 CPP(ObjectSeal) \ |
| 431 CPP(ObjectValues) \ |
| 432 \ |
| 433 /* Proxy */ \ |
| 434 CPP(ProxyConstructor) \ |
| 435 CPP(ProxyConstructor_ConstructStub) \ |
| 436 \ |
| 437 /* Reflect */ \ |
| 438 ASM(ReflectApply) \ |
| 439 ASM(ReflectConstruct) \ |
| 440 CPP(ReflectDefineProperty) \ |
| 441 CPP(ReflectDeleteProperty) \ |
| 442 CPP(ReflectGet) \ |
| 443 CPP(ReflectGetOwnPropertyDescriptor) \ |
| 444 CPP(ReflectGetPrototypeOf) \ |
| 445 CPP(ReflectHas) \ |
| 446 CPP(ReflectIsExtensible) \ |
| 447 CPP(ReflectOwnKeys) \ |
| 448 CPP(ReflectPreventExtensions) \ |
| 449 CPP(ReflectSet) \ |
| 450 CPP(ReflectSetPrototypeOf) \ |
| 451 \ |
| 452 /* SharedArrayBuffer */ \ |
| 453 CPP(SharedArrayBufferPrototypeGetByteLength) \ |
| 454 TFJ(AtomicsLoad, 3) \ |
| 455 TFJ(AtomicsStore, 4) \ |
| 456 \ |
| 457 /* String */ \ |
| 458 ASM(StringConstructor) \ |
| 459 ASM(StringConstructor_ConstructStub) \ |
| 460 CPP(StringFromCodePoint) \ |
| 461 /* ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits ) */ \ |
| 462 TFJ(StringFromCharCode, 2) \ |
| 463 /* ES6 section 21.1.3.1 String.prototype.charAt ( pos ) */ \ |
| 464 TFJ(StringPrototypeCharAt, 2) \ |
| 465 /* ES6 section 21.1.3.2 String.prototype.charCodeAt ( pos ) */ \ |
| 466 TFJ(StringPrototypeCharCodeAt, 2) \ |
| 467 /* ES6 section 21.1.3.25 String.prototype.toString () */ \ |
| 468 TFJ(StringPrototypeToString, 1) \ |
| 469 CPP(StringPrototypeTrim) \ |
| 470 CPP(StringPrototypeTrimLeft) \ |
| 471 CPP(StringPrototypeTrimRight) \ |
| 472 /* ES6 section 21.1.3.28 String.prototype.valueOf () */ \ |
| 473 TFJ(StringPrototypeValueOf, 1) \ |
| 474 \ |
| 475 /* Symbol */ \ |
| 476 CPP(SymbolConstructor) \ |
| 477 CPP(SymbolConstructor_ConstructStub) \ |
| 478 /* ES6 section 19.4.3.4 Symbol.prototype [ @@toPrimitive ] ( hint ) */ \ |
| 479 TFJ(SymbolPrototypeToPrimitive, 2) \ |
| 480 /* ES6 section 19.4.3.2 Symbol.prototype.toString ( ) */ \ |
| 481 TFJ(SymbolPrototypeToString, 1) \ |
| 482 /* ES6 section 19.4.3.3 Symbol.prototype.valueOf ( ) */ \ |
| 483 TFJ(SymbolPrototypeValueOf, 1) \ |
| 484 \ |
| 485 /* TypedArray */ \ |
| 486 CPP(TypedArrayPrototypeBuffer) \ |
| 487 /* ES6 section 22.2.3.2 get %TypedArray%.prototype.byteLength */ \ |
| 488 TFJ(TypedArrayPrototypeByteLength, 1) \ |
| 489 /* ES6 section 22.2.3.3 get %TypedArray%.prototype.byteOffset */ \ |
| 490 TFJ(TypedArrayPrototypeByteOffset, 1) \ |
| 491 /* ES6 section 22.2.3.18 get %TypedArray%.prototype.length */ \ |
| 381 TFJ(TypedArrayPrototypeLength, 1) | 492 TFJ(TypedArrayPrototypeLength, 1) |
| 382 | 493 |
| 383 #define IGNORE_BUILTIN(...) | 494 #define IGNORE_BUILTIN(...) |
| 384 | 495 |
| 385 #define BUILTIN_LIST_ALL(V) BUILTIN_LIST(V, V, V, V, V, V, V) | 496 #define BUILTIN_LIST_ALL(V) BUILTIN_LIST(V, V, V, V, V, V, V) |
| 386 | 497 |
| 387 #define BUILTIN_LIST_C(V) \ | 498 #define BUILTIN_LIST_C(V) \ |
| 388 BUILTIN_LIST(V, V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ | 499 BUILTIN_LIST(V, V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ |
| 389 IGNORE_BUILTIN, IGNORE_BUILTIN) | 500 IGNORE_BUILTIN, IGNORE_BUILTIN) |
| 390 | 501 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 int argc, Handle<Object> args[]); | 570 int argc, Handle<Object> args[]); |
| 460 | 571 |
| 461 enum ExitFrameType { EXIT, BUILTIN_EXIT }; | 572 enum ExitFrameType { EXIT, BUILTIN_EXIT }; |
| 462 | 573 |
| 463 static void Generate_Adaptor(MacroAssembler* masm, Address builtin_address, | 574 static void Generate_Adaptor(MacroAssembler* masm, Address builtin_address, |
| 464 ExitFrameType exit_frame_type); | 575 ExitFrameType exit_frame_type); |
| 465 | 576 |
| 466 private: | 577 private: |
| 467 Builtins(); | 578 Builtins(); |
| 468 | 579 |
| 469 static void Generate_AllocateInNewSpace(MacroAssembler* masm); | |
| 470 static void Generate_AllocateInOldSpace(MacroAssembler* masm); | |
| 471 static void Generate_ConstructedNonConstructable(MacroAssembler* masm); | |
| 472 static void Generate_InstantiateAsmJs(MacroAssembler* masm); | |
| 473 static void Generate_CompileLazy(MacroAssembler* masm); | |
| 474 static void Generate_CompileBaseline(MacroAssembler* masm); | |
| 475 static void Generate_InOptimizationQueue(MacroAssembler* masm); | |
| 476 static void Generate_CompileOptimized(MacroAssembler* masm); | |
| 477 static void Generate_CompileOptimizedConcurrent(MacroAssembler* masm); | |
| 478 static void Generate_JSConstructStubGeneric(MacroAssembler* masm); | |
| 479 static void Generate_JSBuiltinsConstructStub(MacroAssembler* masm); | |
| 480 static void Generate_JSBuiltinsConstructStubForDerived(MacroAssembler* masm); | |
| 481 static void Generate_JSConstructStubApi(MacroAssembler* masm); | |
| 482 static void Generate_JSEntryTrampoline(MacroAssembler* masm); | |
| 483 static void Generate_JSConstructEntryTrampoline(MacroAssembler* masm); | |
| 484 static void Generate_ResumeGeneratorTrampoline(MacroAssembler* masm); | |
| 485 static void Generate_NotifyDeoptimized(MacroAssembler* masm); | |
| 486 static void Generate_NotifySoftDeoptimized(MacroAssembler* masm); | |
| 487 static void Generate_NotifyLazyDeoptimized(MacroAssembler* masm); | |
| 488 static void Generate_NotifyStubFailure(MacroAssembler* masm); | |
| 489 static void Generate_NotifyStubFailureSaveDoubles(MacroAssembler* masm); | |
| 490 static void Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm); | |
| 491 static void Generate_StringToNumber(MacroAssembler* masm); | |
| 492 static void Generate_ToNumber(MacroAssembler* masm); | |
| 493 | |
| 494 static void Generate_Apply(MacroAssembler* masm); | |
| 495 | |
| 496 // ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) | |
| 497 static void Generate_CallFunction(MacroAssembler* masm, | 580 static void Generate_CallFunction(MacroAssembler* masm, |
| 498 ConvertReceiverMode mode, | 581 ConvertReceiverMode mode, |
| 499 TailCallMode tail_call_mode); | 582 TailCallMode tail_call_mode); |
| 500 static void Generate_CallFunction_ReceiverIsNullOrUndefined( | 583 |
| 501 MacroAssembler* masm) { | |
| 502 Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined, | |
| 503 TailCallMode::kDisallow); | |
| 504 } | |
| 505 static void Generate_CallFunction_ReceiverIsNotNullOrUndefined( | |
| 506 MacroAssembler* masm) { | |
| 507 Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
| 508 TailCallMode::kDisallow); | |
| 509 } | |
| 510 static void Generate_CallFunction_ReceiverIsAny(MacroAssembler* masm) { | |
| 511 Generate_CallFunction(masm, ConvertReceiverMode::kAny, | |
| 512 TailCallMode::kDisallow); | |
| 513 } | |
| 514 static void Generate_TailCallFunction_ReceiverIsNullOrUndefined( | |
| 515 MacroAssembler* masm) { | |
| 516 Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined, | |
| 517 TailCallMode::kAllow); | |
| 518 } | |
| 519 static void Generate_TailCallFunction_ReceiverIsNotNullOrUndefined( | |
| 520 MacroAssembler* masm) { | |
| 521 Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
| 522 TailCallMode::kAllow); | |
| 523 } | |
| 524 static void Generate_TailCallFunction_ReceiverIsAny(MacroAssembler* masm) { | |
| 525 Generate_CallFunction(masm, ConvertReceiverMode::kAny, | |
| 526 TailCallMode::kAllow); | |
| 527 } | |
| 528 // ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) | |
| 529 static void Generate_CallBoundFunctionImpl(MacroAssembler* masm, | 584 static void Generate_CallBoundFunctionImpl(MacroAssembler* masm, |
| 530 TailCallMode tail_call_mode); | 585 TailCallMode tail_call_mode); |
| 531 static void Generate_CallBoundFunction(MacroAssembler* masm) { | 586 |
| 532 Generate_CallBoundFunctionImpl(masm, TailCallMode::kDisallow); | |
| 533 } | |
| 534 static void Generate_TailCallBoundFunction(MacroAssembler* masm) { | |
| 535 Generate_CallBoundFunctionImpl(masm, TailCallMode::kAllow); | |
| 536 } | |
| 537 // ES6 section 7.3.12 Call(F, V, [argumentsList]) | |
| 538 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode, | 587 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode, |
| 539 TailCallMode tail_call_mode); | 588 TailCallMode tail_call_mode); |
| 540 static void Generate_Call_ReceiverIsNullOrUndefined(MacroAssembler* masm) { | |
| 541 Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined, | |
| 542 TailCallMode::kDisallow); | |
| 543 } | |
| 544 static void Generate_Call_ReceiverIsNotNullOrUndefined(MacroAssembler* masm) { | |
| 545 Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
| 546 TailCallMode::kDisallow); | |
| 547 } | |
| 548 static void Generate_Call_ReceiverIsAny(MacroAssembler* masm) { | |
| 549 Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kDisallow); | |
| 550 } | |
| 551 static void Generate_TailCall_ReceiverIsNullOrUndefined( | |
| 552 MacroAssembler* masm) { | |
| 553 Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined, | |
| 554 TailCallMode::kAllow); | |
| 555 } | |
| 556 static void Generate_TailCall_ReceiverIsNotNullOrUndefined( | |
| 557 MacroAssembler* masm) { | |
| 558 Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
| 559 TailCallMode::kAllow); | |
| 560 } | |
| 561 static void Generate_TailCall_ReceiverIsAny(MacroAssembler* masm) { | |
| 562 Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kAllow); | |
| 563 } | |
| 564 | 589 |
| 565 // ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) | 590 static void Generate_InterpreterPushArgsAndCallImpl( |
| 566 static void Generate_ConstructFunction(MacroAssembler* masm); | 591 MacroAssembler* masm, TailCallMode tail_call_mode, |
| 567 // ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) | 592 CallableType function_type); |
| 568 static void Generate_ConstructBoundFunction(MacroAssembler* masm); | |
| 569 // ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) | |
| 570 static void Generate_ConstructProxy(MacroAssembler* masm); | |
| 571 // ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) | |
| 572 static void Generate_Construct(MacroAssembler* masm); | |
| 573 | |
| 574 static void Generate_HandleFastApiCall(MacroAssembler* masm); | |
| 575 | |
| 576 // ES6 section 19.3.3.2 Boolean.prototype.toString ( ) | |
| 577 static void Generate_BooleanPrototypeToString(CodeStubAssembler* assembler); | |
| 578 // ES6 section 19.3.3.3 Boolean.prototype.valueOf ( ) | |
| 579 static void Generate_BooleanPrototypeValueOf(CodeStubAssembler* assembler); | |
| 580 | 593 |
| 581 static void Generate_DatePrototype_GetField(MacroAssembler* masm, | 594 static void Generate_DatePrototype_GetField(MacroAssembler* masm, |
| 582 int field_index); | 595 int field_index); |
| 583 // ES6 section 20.3.4.2 Date.prototype.getDate ( ) | |
| 584 static void Generate_DatePrototypeGetDate(MacroAssembler* masm); | |
| 585 // ES6 section 20.3.4.3 Date.prototype.getDay ( ) | |
| 586 static void Generate_DatePrototypeGetDay(MacroAssembler* masm); | |
| 587 // ES6 section 20.3.4.4 Date.prototype.getFullYear ( ) | |
| 588 static void Generate_DatePrototypeGetFullYear(MacroAssembler* masm); | |
| 589 // ES6 section 20.3.4.5 Date.prototype.getHours ( ) | |
| 590 static void Generate_DatePrototypeGetHours(MacroAssembler* masm); | |
| 591 // ES6 section 20.3.4.6 Date.prototype.getMilliseconds ( ) | |
| 592 static void Generate_DatePrototypeGetMilliseconds(MacroAssembler* masm); | |
| 593 // ES6 section 20.3.4.7 Date.prototype.getMinutes ( ) | |
| 594 static void Generate_DatePrototypeGetMinutes(MacroAssembler* masm); | |
| 595 // ES6 section 20.3.4.8 Date.prototype.getMonth ( ) | |
| 596 static void Generate_DatePrototypeGetMonth(MacroAssembler* masm); | |
| 597 // ES6 section 20.3.4.9 Date.prototype.getSeconds ( ) | |
| 598 static void Generate_DatePrototypeGetSeconds(MacroAssembler* masm); | |
| 599 // ES6 section 20.3.4.10 Date.prototype.getTime ( ) | |
| 600 static void Generate_DatePrototypeGetTime(MacroAssembler* masm); | |
| 601 // ES6 section 20.3.4.11 Date.prototype.getTimezoneOffset ( ) | |
| 602 static void Generate_DatePrototypeGetTimezoneOffset(MacroAssembler* masm); | |
| 603 // ES6 section 20.3.4.12 Date.prototype.getUTCDate ( ) | |
| 604 static void Generate_DatePrototypeGetUTCDate(MacroAssembler* masm); | |
| 605 // ES6 section 20.3.4.13 Date.prototype.getUTCDay ( ) | |
| 606 static void Generate_DatePrototypeGetUTCDay(MacroAssembler* masm); | |
| 607 // ES6 section 20.3.4.14 Date.prototype.getUTCFullYear ( ) | |
| 608 static void Generate_DatePrototypeGetUTCFullYear(MacroAssembler* masm); | |
| 609 // ES6 section 20.3.4.15 Date.prototype.getUTCHours ( ) | |
| 610 static void Generate_DatePrototypeGetUTCHours(MacroAssembler* masm); | |
| 611 // ES6 section 20.3.4.16 Date.prototype.getUTCMilliseconds ( ) | |
| 612 static void Generate_DatePrototypeGetUTCMilliseconds(MacroAssembler* masm); | |
| 613 // ES6 section 20.3.4.17 Date.prototype.getUTCMinutes ( ) | |
| 614 static void Generate_DatePrototypeGetUTCMinutes(MacroAssembler* masm); | |
| 615 // ES6 section 20.3.4.18 Date.prototype.getUTCMonth ( ) | |
| 616 static void Generate_DatePrototypeGetUTCMonth(MacroAssembler* masm); | |
| 617 // ES6 section 20.3.4.19 Date.prototype.getUTCSeconds ( ) | |
| 618 static void Generate_DatePrototypeGetUTCSeconds(MacroAssembler* masm); | |
| 619 | |
| 620 static void Generate_FunctionPrototypeApply(MacroAssembler* masm); | |
| 621 static void Generate_FunctionPrototypeCall(MacroAssembler* masm); | |
| 622 | |
| 623 static void Generate_ReflectApply(MacroAssembler* masm); | |
| 624 static void Generate_ReflectConstruct(MacroAssembler* masm); | |
| 625 | |
| 626 static void Generate_InternalArrayCode(MacroAssembler* masm); | |
| 627 static void Generate_ArrayCode(MacroAssembler* masm); | |
| 628 | |
| 629 // ES6 section 20.2.2.1 Math.abs ( x ) | |
| 630 static void Generate_MathAbs(CodeStubAssembler* assembler); | |
| 631 // ES6 section 20.2.2.2 Math.acos ( x ) | |
| 632 static void Generate_MathAcos(CodeStubAssembler* assembler); | |
| 633 // ES6 section 20.2.2.3 Math.acosh ( x ) | |
| 634 static void Generate_MathAcosh(CodeStubAssembler* assembler); | |
| 635 // ES6 section 20.2.2.4 Math.asin ( x ) | |
| 636 static void Generate_MathAsin(CodeStubAssembler* assembler); | |
| 637 // ES6 section 20.2.2.5 Math.asinh ( x ) | |
| 638 static void Generate_MathAsinh(CodeStubAssembler* assembler); | |
| 639 // ES6 section 20.2.2.6 Math.atan ( x ) | |
| 640 static void Generate_MathAtan(CodeStubAssembler* assembler); | |
| 641 // ES6 section 20.2.2.7 Math.atanh ( x ) | |
| 642 static void Generate_MathAtanh(CodeStubAssembler* assembler); | |
| 643 // ES6 section 20.2.2.8 Math.atan2 ( y, x ) | |
| 644 static void Generate_MathAtan2(CodeStubAssembler* assembler); | |
| 645 // ES6 section 20.2.2.10 Math.ceil ( x ) | |
| 646 static void Generate_MathCeil(CodeStubAssembler* assembler); | |
| 647 // ES6 section 20.2.2.9 Math.ceil ( x ) | |
| 648 static void Generate_MathCbrt(CodeStubAssembler* assembler); | |
| 649 // ES6 section 20.2.2.15 Math.expm1 ( x ) | |
| 650 static void Generate_MathExpm1(CodeStubAssembler* assembler); | |
| 651 // ES6 section 20.2.2.11 Math.clz32 ( x ) | |
| 652 static void Generate_MathClz32(CodeStubAssembler* assembler); | |
| 653 // ES6 section 20.2.2.12 Math.cos ( x ) | |
| 654 static void Generate_MathCos(CodeStubAssembler* assembler); | |
| 655 // ES6 section 20.2.2.13 Math.cosh ( x ) | |
| 656 static void Generate_MathCosh(CodeStubAssembler* assembler); | |
| 657 // ES6 section 20.2.2.14 Math.exp ( x ) | |
| 658 static void Generate_MathExp(CodeStubAssembler* assembler); | |
| 659 // ES6 section 20.2.2.16 Math.floor ( x ) | |
| 660 static void Generate_MathFloor(CodeStubAssembler* assembler); | |
| 661 // ES6 section 20.2.2.17 Math.fround ( x ) | |
| 662 static void Generate_MathFround(CodeStubAssembler* assembler); | |
| 663 // ES6 section 20.2.2.20 Math.imul ( x, y ) | |
| 664 static void Generate_MathImul(CodeStubAssembler* assembler); | |
| 665 // ES6 section 20.2.2.20 Math.log ( x ) | |
| 666 static void Generate_MathLog(CodeStubAssembler* assembler); | |
| 667 // ES6 section 20.2.2.21 Math.log ( x ) | |
| 668 static void Generate_MathLog1p(CodeStubAssembler* assembler); | |
| 669 | |
| 670 static void Generate_MathLog2(CodeStubAssembler* assembler); | |
| 671 static void Generate_MathLog10(CodeStubAssembler* assembler); | |
| 672 | 596 |
| 673 enum class MathMaxMinKind { kMax, kMin }; | 597 enum class MathMaxMinKind { kMax, kMin }; |
| 674 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); | 598 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); |
| 675 // ES6 section 20.2.2.24 Math.max ( value1, value2 , ...values ) | |
| 676 static void Generate_MathMax(MacroAssembler* masm) { | |
| 677 Generate_MathMaxMin(masm, MathMaxMinKind::kMax); | |
| 678 } | |
| 679 // ES6 section 20.2.2.25 Math.min ( value1, value2 , ...values ) | |
| 680 static void Generate_MathMin(MacroAssembler* masm) { | |
| 681 Generate_MathMaxMin(masm, MathMaxMinKind::kMin); | |
| 682 } | |
| 683 // ES6 section 20.2.2.26 Math.pow ( x, y ) | |
| 684 static void Generate_MathPow(CodeStubAssembler* assembler); | |
| 685 // ES6 section 20.2.2.28 Math.round ( x ) | |
| 686 static void Generate_MathRound(CodeStubAssembler* assembler); | |
| 687 // ES6 section 20.2.2.29 Math.sign ( x ) | |
| 688 static void Generate_MathSign(CodeStubAssembler* assembler); | |
| 689 // ES6 section 20.2.2.30 Math.sin ( x ) | |
| 690 static void Generate_MathSin(CodeStubAssembler* assembler); | |
| 691 // ES6 section 20.2.2.31 Math.sinh ( x ) | |
| 692 static void Generate_MathSinh(CodeStubAssembler* assembler); | |
| 693 // ES6 section 20.2.2.32 Math.sqrt ( x ) | |
| 694 static void Generate_MathSqrt(CodeStubAssembler* assembler); | |
| 695 // ES6 section 20.2.2.33 Math.tan ( x ) | |
| 696 static void Generate_MathTan(CodeStubAssembler* assembler); | |
| 697 // ES6 section 20.2.2.34 Math.tanh ( x ) | |
| 698 static void Generate_MathTanh(CodeStubAssembler* assembler); | |
| 699 // ES6 section 20.2.2.35 Math.trunc ( x ) | |
| 700 static void Generate_MathTrunc(CodeStubAssembler* assembler); | |
| 701 | 599 |
| 702 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Call]] case. | 600 #define DECLARE_ASM(Name, ...) \ |
| 703 static void Generate_NumberConstructor(MacroAssembler* masm); | 601 static void Generate_##Name(MacroAssembler* masm); |
| 704 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Construct]] case. | 602 #define DECLARE_TF(Name, ...) \ |
| 705 static void Generate_NumberConstructor_ConstructStub(MacroAssembler* masm); | 603 static void Generate_##Name(CodeStubAssembler* csasm); |
| 706 // ES6 section 20.1.3.7 Number.prototype.valueOf ( ) | |
| 707 static void Generate_NumberPrototypeValueOf(CodeStubAssembler* assembler); | |
| 708 | 604 |
| 709 // ES6 section 19.2.3.6 Function.prototype [ @@hasInstance ] ( V ) | 605 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, DECLARE_TF, DECLARE_TF, |
| 710 static void Generate_FunctionPrototypeHasInstance( | 606 DECLARE_ASM, DECLARE_ASM, DECLARE_ASM) |
| 711 CodeStubAssembler* assembler); | |
| 712 | 607 |
| 713 // ES6 section 25.3.1.2 Generator.prototype.next ( value ) | 608 #undef DECLARE_ASM |
| 714 static void Generate_GeneratorPrototypeNext(CodeStubAssembler* assembler); | 609 #undef DECLARE_TF |
| 715 // ES6 section 25.3.1.3 Generator.prototype.return ( value ) | |
| 716 static void Generate_GeneratorPrototypeReturn(CodeStubAssembler* assembler); | |
| 717 // ES6 section 25.3.1.4 Generator.prototype.throw ( exception ) | |
| 718 static void Generate_GeneratorPrototypeThrow(CodeStubAssembler* assembler); | |
| 719 | |
| 720 // ES6 section 19.1.3.2 Object.prototype.hasOwnProperty | |
| 721 static void Generate_ObjectHasOwnProperty(CodeStubAssembler* assembler); | |
| 722 | |
| 723 // ES6 section 19.1.3.6 Object.prototype.toString () | |
| 724 static void Generate_ObjectProtoToString(CodeStubAssembler* assembler); | |
| 725 | |
| 726 // ES6 section 22.1.2.2 Array.isArray | |
| 727 static void Generate_ArrayIsArray(CodeStubAssembler* assembler); | |
| 728 | |
| 729 // ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits ) | |
| 730 static void Generate_StringFromCharCode(CodeStubAssembler* assembler); | |
| 731 // ES6 section 21.1.3.1 String.prototype.charAt ( pos ) | |
| 732 static void Generate_StringPrototypeCharAt(CodeStubAssembler* assembler); | |
| 733 // ES6 section 21.1.3.2 String.prototype.charCodeAt ( pos ) | |
| 734 static void Generate_StringPrototypeCharCodeAt(CodeStubAssembler* assembler); | |
| 735 // ES6 section 21.1.3.25 String.prototype.toString () | |
| 736 static void Generate_StringPrototypeToString(CodeStubAssembler* assembler); | |
| 737 // ES6 section 21.1.3.28 String.prototype.valueOf () | |
| 738 static void Generate_StringPrototypeValueOf(CodeStubAssembler* assembler); | |
| 739 | |
| 740 static void Generate_StringConstructor(MacroAssembler* masm); | |
| 741 static void Generate_StringConstructor_ConstructStub(MacroAssembler* masm); | |
| 742 | |
| 743 // ES6 section 19.4.3.4 Symbol.prototype [ @@toPrimitive ] ( hint ) | |
| 744 static void Generate_SymbolPrototypeToPrimitive(CodeStubAssembler* assembler); | |
| 745 // ES6 section 19.4.3.2 Symbol.prototype.toString ( ) | |
| 746 static void Generate_SymbolPrototypeToString(CodeStubAssembler* assembler); | |
| 747 // ES6 section 19.4.3.3 Symbol.prototype.valueOf ( ) | |
| 748 static void Generate_SymbolPrototypeValueOf(CodeStubAssembler* assembler); | |
| 749 | |
| 750 // ES6 section 22.2.3.2 get %TypedArray%.prototype.byteLength | |
| 751 static void Generate_TypedArrayPrototypeByteLength( | |
| 752 CodeStubAssembler* assembler); | |
| 753 // ES6 section 22.2.3.3 get %TypedArray%.prototype.byteOffset | |
| 754 static void Generate_TypedArrayPrototypeByteOffset( | |
| 755 CodeStubAssembler* assembler); | |
| 756 // ES6 section 22.2.3.18 get %TypedArray%.prototype.length | |
| 757 static void Generate_TypedArrayPrototypeLength(CodeStubAssembler* assembler); | |
| 758 | |
| 759 static void Generate_OnStackReplacement(MacroAssembler* masm); | |
| 760 static void Generate_InterruptCheck(MacroAssembler* masm); | |
| 761 static void Generate_StackCheck(MacroAssembler* masm); | |
| 762 | |
| 763 static void Generate_InterpreterEntryTrampoline(MacroAssembler* masm); | |
| 764 static void Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm); | |
| 765 static void Generate_InterpreterMarkBaselineOnReturn(MacroAssembler* masm); | |
| 766 static void Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) { | |
| 767 return Generate_InterpreterPushArgsAndCallImpl( | |
| 768 masm, TailCallMode::kDisallow, CallableType::kAny); | |
| 769 } | |
| 770 static void Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) { | |
| 771 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow, | |
| 772 CallableType::kAny); | |
| 773 } | |
| 774 static void Generate_InterpreterPushArgsAndCallFunction( | |
| 775 MacroAssembler* masm) { | |
| 776 return Generate_InterpreterPushArgsAndCallImpl( | |
| 777 masm, TailCallMode::kDisallow, CallableType::kJSFunction); | |
| 778 } | |
| 779 static void Generate_InterpreterPushArgsAndTailCallFunction( | |
| 780 MacroAssembler* masm) { | |
| 781 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow, | |
| 782 CallableType::kJSFunction); | |
| 783 } | |
| 784 static void Generate_InterpreterPushArgsAndCallImpl( | |
| 785 MacroAssembler* masm, TailCallMode tail_call_mode, | |
| 786 CallableType function_type); | |
| 787 static void Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm); | |
| 788 | |
| 789 #define DECLARE_CODE_AGE_BUILTIN_GENERATOR(C) \ | |
| 790 static void Generate_Make##C##CodeYoungAgainEvenMarking( \ | |
| 791 MacroAssembler* masm); \ | |
| 792 static void Generate_Make##C##CodeYoungAgainOddMarking(MacroAssembler* masm); | |
| 793 CODE_AGE_LIST(DECLARE_CODE_AGE_BUILTIN_GENERATOR) | |
| 794 #undef DECLARE_CODE_AGE_BUILTIN_GENERATOR | |
| 795 | |
| 796 static void Generate_MarkCodeAsToBeExecutedOnce(MacroAssembler* masm); | |
| 797 static void Generate_MarkCodeAsExecutedOnce(MacroAssembler* masm); | |
| 798 static void Generate_MarkCodeAsExecutedTwice(MacroAssembler* masm); | |
| 799 | |
| 800 static void Generate_AtomicsLoad(CodeStubAssembler* assembler); | |
| 801 static void Generate_AtomicsStore(CodeStubAssembler* assembler); | |
| 802 | 610 |
| 803 // Note: These are always Code objects, but to conform with | 611 // Note: These are always Code objects, but to conform with |
| 804 // IterateBuiltins() above which assumes Object**'s for the callback | 612 // IterateBuiltins() above which assumes Object**'s for the callback |
| 805 // function f, we use an Object* array here. | 613 // function f, we use an Object* array here. |
| 806 Object* builtins_[builtin_count]; | 614 Object* builtins_[builtin_count]; |
| 807 bool initialized_; | 615 bool initialized_; |
| 808 | 616 |
| 809 friend class Isolate; | 617 friend class Isolate; |
| 810 | 618 |
| 811 DISALLOW_COPY_AND_ASSIGN(Builtins); | 619 DISALLOW_COPY_AND_ASSIGN(Builtins); |
| 812 }; | 620 }; |
| 813 | 621 |
| 814 } // namespace internal | 622 } // namespace internal |
| 815 } // namespace v8 | 623 } // namespace v8 |
| 816 | 624 |
| 817 #endif // V8_BUILTINS_BUILTINS_H_ | 625 #endif // V8_BUILTINS_BUILTINS_H_ |
| OLD | NEW |