Index: src/runtime.h |
diff --git a/src/runtime.h b/src/runtime.h |
index 3224a282b70772bbee7c2ad574d2e9176277e780..ca5a3f15389c62a830badd878ba5912a68a7307c 100644 |
--- a/src/runtime.h |
+++ b/src/runtime.h |
@@ -21,472 +21,481 @@ namespace internal { |
// WARNING: RUNTIME_FUNCTION_LIST_ALWAYS_* is a very large macro that caused |
// MSVC Intellisense to crash. It was broken into two macros to work around |
// this problem. Please avoid large recursive macros whenever possible. |
-#define RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \ |
- /* Property access */ \ |
- F(GetProperty, 2, 1) \ |
- F(KeyedGetProperty, 2, 1) \ |
- F(DeleteProperty, 3, 1) \ |
- F(HasOwnProperty, 2, 1) \ |
- F(HasProperty, 2, 1) \ |
- F(HasElement, 2, 1) \ |
- F(IsPropertyEnumerable, 2, 1) \ |
- F(GetPropertyNames, 1, 1) \ |
- F(GetPropertyNamesFast, 1, 1) \ |
- F(GetOwnPropertyNames, 2, 1) \ |
- F(GetOwnElementNames, 1, 1) \ |
- F(GetInterceptorInfo, 1, 1) \ |
- F(GetNamedInterceptorPropertyNames, 1, 1) \ |
- F(GetIndexedInterceptorElementNames, 1, 1) \ |
- F(GetArgumentsProperty, 1, 1) \ |
- F(ToFastProperties, 1, 1) \ |
- F(FinishArrayPrototypeSetup, 1, 1) \ |
- F(SpecialArrayFunctions, 0, 1) \ |
- F(IsSloppyModeFunction, 1, 1) \ |
- F(GetDefaultReceiver, 1, 1) \ |
- \ |
- F(GetPrototype, 1, 1) \ |
- F(SetPrototype, 2, 1) \ |
- F(IsInPrototypeChain, 2, 1) \ |
- \ |
- F(GetOwnProperty, 2, 1) \ |
- \ |
- F(IsExtensible, 1, 1) \ |
- F(PreventExtensions, 1, 1)\ |
- \ |
- /* Utilities */ \ |
- F(CheckIsBootstrapping, 0, 1) \ |
- F(GetRootNaN, 0, 1) \ |
- F(Call, -1 /* >= 2 */, 1) \ |
- F(Apply, 5, 1) \ |
- F(GetFunctionDelegate, 1, 1) \ |
- F(GetConstructorDelegate, 1, 1) \ |
- F(DeoptimizeFunction, 1, 1) \ |
- F(ClearFunctionTypeFeedback, 1, 1) \ |
- F(RunningInSimulator, 0, 1) \ |
- F(IsConcurrentRecompilationSupported, 0, 1) \ |
- F(OptimizeFunctionOnNextCall, -1, 1) \ |
- F(NeverOptimizeFunction, 1, 1) \ |
- F(GetOptimizationStatus, -1, 1) \ |
- F(GetOptimizationCount, 1, 1) \ |
- F(UnblockConcurrentRecompilation, 0, 1) \ |
- F(CompileForOnStackReplacement, 1, 1) \ |
- F(SetAllocationTimeout, -1 /* 2 || 3 */, 1) \ |
- F(SetNativeFlag, 1, 1) \ |
- F(SetInlineBuiltinFlag, 1, 1) \ |
- F(StoreArrayLiteralElement, 5, 1) \ |
- F(DebugPrepareStepInIfStepping, 1, 1) \ |
- F(DebugPromiseHandlePrologue, 1, 1) \ |
- F(DebugPromiseHandleEpilogue, 0, 1) \ |
- F(DebugPromiseEvent, 1, 1) \ |
- F(DebugAsyncTaskEvent, 1, 1) \ |
- F(FlattenString, 1, 1) \ |
- F(LoadMutableDouble, 2, 1) \ |
- F(TryMigrateInstance, 1, 1) \ |
- F(NotifyContextDisposed, 0, 1) \ |
- \ |
- /* Array join support */ \ |
- F(PushIfAbsent, 2, 1) \ |
- F(ArrayConcat, 1, 1) \ |
- \ |
- /* Conversions */ \ |
- F(ToBool, 1, 1) \ |
- F(Typeof, 1, 1) \ |
- \ |
- F(StringToNumber, 1, 1) \ |
- F(StringParseInt, 2, 1) \ |
- F(StringParseFloat, 1, 1) \ |
- F(StringToLowerCase, 1, 1) \ |
- F(StringToUpperCase, 1, 1) \ |
- F(StringSplit, 3, 1) \ |
- F(CharFromCode, 1, 1) \ |
- F(URIEscape, 1, 1) \ |
- F(URIUnescape, 1, 1) \ |
- \ |
- F(NumberToInteger, 1, 1) \ |
- F(NumberToIntegerMapMinusZero, 1, 1) \ |
- F(NumberToJSUint32, 1, 1) \ |
- F(NumberToJSInt32, 1, 1) \ |
- \ |
- /* Arithmetic operations */ \ |
- F(NumberAdd, 2, 1) \ |
- F(NumberSub, 2, 1) \ |
- F(NumberMul, 2, 1) \ |
- F(NumberDiv, 2, 1) \ |
- F(NumberMod, 2, 1) \ |
- F(NumberUnaryMinus, 1, 1) \ |
- F(NumberImul, 2, 1) \ |
- \ |
- F(StringBuilderConcat, 3, 1) \ |
- F(StringBuilderJoin, 3, 1) \ |
- F(SparseJoinWithSeparator, 3, 1) \ |
- \ |
- /* Bit operations */ \ |
- F(NumberOr, 2, 1) \ |
- F(NumberAnd, 2, 1) \ |
- F(NumberXor, 2, 1) \ |
- \ |
- F(NumberShl, 2, 1) \ |
- F(NumberShr, 2, 1) \ |
- F(NumberSar, 2, 1) \ |
- \ |
- /* Comparisons */ \ |
- F(NumberEquals, 2, 1) \ |
- F(StringEquals, 2, 1) \ |
- \ |
- F(NumberCompare, 3, 1) \ |
- F(SmiLexicographicCompare, 2, 1) \ |
- \ |
- /* Math */ \ |
- F(MathAcos, 1, 1) \ |
- F(MathAsin, 1, 1) \ |
- F(MathAtan, 1, 1) \ |
- F(MathFloorRT, 1, 1) \ |
- F(MathAtan2, 2, 1) \ |
- F(MathExpRT, 1, 1) \ |
- F(RoundNumber, 1, 1) \ |
- F(MathFround, 1, 1) \ |
- \ |
- /* Regular expressions */ \ |
- F(RegExpCompile, 3, 1) \ |
- F(RegExpExecMultiple, 4, 1) \ |
- F(RegExpInitializeObject, 5, 1) \ |
- \ |
- /* JSON */ \ |
- F(ParseJson, 1, 1) \ |
- F(BasicJSONStringify, 1, 1) \ |
- F(QuoteJSONString, 1, 1) \ |
- \ |
- /* Strings */ \ |
- F(StringIndexOf, 3, 1) \ |
- F(StringLastIndexOf, 3, 1) \ |
- F(StringLocaleCompare, 2, 1) \ |
- F(StringReplaceGlobalRegExpWithString, 4, 1) \ |
- F(StringReplaceOneCharWithString, 3, 1) \ |
- F(StringMatch, 3, 1) \ |
- F(StringTrim, 3, 1) \ |
- F(StringToArray, 2, 1) \ |
- F(NewStringWrapper, 1, 1) \ |
- F(NewString, 2, 1) \ |
- F(TruncateString, 2, 1) \ |
- \ |
- /* Numbers */ \ |
- F(NumberToRadixString, 2, 1) \ |
- F(NumberToFixed, 2, 1) \ |
- F(NumberToExponential, 2, 1) \ |
- F(NumberToPrecision, 2, 1) \ |
+#define RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \ |
+ /* Property access */ \ |
+ F(GetProperty, 2, 1) \ |
+ F(KeyedGetProperty, 2, 1) \ |
+ F(DeleteProperty, 3, 1) \ |
+ F(HasOwnProperty, 2, 1) \ |
+ F(HasProperty, 2, 1) \ |
+ F(HasElement, 2, 1) \ |
+ F(IsPropertyEnumerable, 2, 1) \ |
+ F(GetPropertyNames, 1, 1) \ |
+ F(GetPropertyNamesFast, 1, 1) \ |
+ F(GetOwnPropertyNames, 2, 1) \ |
+ F(GetOwnElementNames, 1, 1) \ |
+ F(GetInterceptorInfo, 1, 1) \ |
+ F(GetNamedInterceptorPropertyNames, 1, 1) \ |
+ F(GetIndexedInterceptorElementNames, 1, 1) \ |
+ F(GetArgumentsProperty, 1, 1) \ |
+ F(ToFastProperties, 1, 1) \ |
+ F(FinishArrayPrototypeSetup, 1, 1) \ |
+ F(SpecialArrayFunctions, 0, 1) \ |
+ F(IsSloppyModeFunction, 1, 1) \ |
+ F(GetDefaultReceiver, 1, 1) \ |
+ \ |
+ F(GetPrototype, 1, 1) \ |
+ F(SetPrototype, 2, 1) \ |
+ F(IsInPrototypeChain, 2, 1) \ |
+ \ |
+ F(GetOwnProperty, 2, 1) \ |
+ \ |
+ F(IsExtensible, 1, 1) \ |
+ F(PreventExtensions, 1, 1) \ |
+ \ |
+ /* Utilities */ \ |
+ F(CheckIsBootstrapping, 0, 1) \ |
+ F(GetRootNaN, 0, 1) \ |
+ F(Call, -1 /* >= 2 */, 1) \ |
+ F(Apply, 5, 1) \ |
+ F(GetFunctionDelegate, 1, 1) \ |
+ F(GetConstructorDelegate, 1, 1) \ |
+ F(DeoptimizeFunction, 1, 1) \ |
+ F(ClearFunctionTypeFeedback, 1, 1) \ |
+ F(RunningInSimulator, 0, 1) \ |
+ F(IsConcurrentRecompilationSupported, 0, 1) \ |
+ F(OptimizeFunctionOnNextCall, -1, 1) \ |
+ F(NeverOptimizeFunction, 1, 1) \ |
+ F(GetOptimizationStatus, -1, 1) \ |
+ F(IsOptimized, 0, 1) /* TODO(turbofan): Only temporary */ \ |
+ F(GetOptimizationCount, 1, 1) \ |
+ F(UnblockConcurrentRecompilation, 0, 1) \ |
+ F(CompileForOnStackReplacement, 1, 1) \ |
+ F(SetAllocationTimeout, -1 /* 2 || 3 */, 1) \ |
+ F(SetNativeFlag, 1, 1) \ |
+ F(SetInlineBuiltinFlag, 1, 1) \ |
+ F(StoreArrayLiteralElement, 5, 1) \ |
+ F(DebugPrepareStepInIfStepping, 1, 1) \ |
+ F(DebugPromiseHandlePrologue, 1, 1) \ |
+ F(DebugPromiseHandleEpilogue, 0, 1) \ |
+ F(DebugPromiseEvent, 1, 1) \ |
+ F(DebugAsyncTaskEvent, 1, 1) \ |
+ F(FlattenString, 1, 1) \ |
+ F(LoadMutableDouble, 2, 1) \ |
+ F(TryMigrateInstance, 1, 1) \ |
+ F(NotifyContextDisposed, 0, 1) \ |
+ \ |
+ /* Array join support */ \ |
+ F(PushIfAbsent, 2, 1) \ |
+ F(ArrayConcat, 1, 1) \ |
+ \ |
+ /* Conversions */ \ |
+ F(ToBool, 1, 1) \ |
+ F(Typeof, 1, 1) \ |
+ \ |
+ F(Booleanize, 2, 1) /* TODO(turbofan): Only temporary */ \ |
+ \ |
+ F(StringToNumber, 1, 1) \ |
+ F(StringParseInt, 2, 1) \ |
+ F(StringParseFloat, 1, 1) \ |
+ F(StringToLowerCase, 1, 1) \ |
+ F(StringToUpperCase, 1, 1) \ |
+ F(StringSplit, 3, 1) \ |
+ F(CharFromCode, 1, 1) \ |
+ F(URIEscape, 1, 1) \ |
+ F(URIUnescape, 1, 1) \ |
+ \ |
+ F(NumberToInteger, 1, 1) \ |
+ F(NumberToIntegerMapMinusZero, 1, 1) \ |
+ F(NumberToJSUint32, 1, 1) \ |
+ F(NumberToJSInt32, 1, 1) \ |
+ \ |
+ /* Arithmetic operations */ \ |
+ F(NumberAdd, 2, 1) \ |
+ F(NumberSub, 2, 1) \ |
+ F(NumberMul, 2, 1) \ |
+ F(NumberDiv, 2, 1) \ |
+ F(NumberMod, 2, 1) \ |
+ F(NumberUnaryMinus, 1, 1) \ |
+ F(NumberImul, 2, 1) \ |
+ \ |
+ F(StringBuilderConcat, 3, 1) \ |
+ F(StringBuilderJoin, 3, 1) \ |
+ F(SparseJoinWithSeparator, 3, 1) \ |
+ \ |
+ /* Bit operations */ \ |
+ F(NumberOr, 2, 1) \ |
+ F(NumberAnd, 2, 1) \ |
+ F(NumberXor, 2, 1) \ |
+ \ |
+ F(NumberShl, 2, 1) \ |
+ F(NumberShr, 2, 1) \ |
+ F(NumberSar, 2, 1) \ |
+ \ |
+ /* Comparisons */ \ |
+ F(NumberEquals, 2, 1) \ |
+ F(StringEquals, 2, 1) \ |
+ \ |
+ F(NumberCompare, 3, 1) \ |
+ F(SmiLexicographicCompare, 2, 1) \ |
+ \ |
+ /* Math */ \ |
+ F(MathAcos, 1, 1) \ |
+ F(MathAsin, 1, 1) \ |
+ F(MathAtan, 1, 1) \ |
+ F(MathFloorRT, 1, 1) \ |
+ F(MathAtan2, 2, 1) \ |
+ F(MathExpRT, 1, 1) \ |
+ F(RoundNumber, 1, 1) \ |
+ F(MathFround, 1, 1) \ |
+ \ |
+ /* Regular expressions */ \ |
+ F(RegExpCompile, 3, 1) \ |
+ F(RegExpExecMultiple, 4, 1) \ |
+ F(RegExpInitializeObject, 5, 1) \ |
+ \ |
+ /* JSON */ \ |
+ F(ParseJson, 1, 1) \ |
+ F(BasicJSONStringify, 1, 1) \ |
+ F(QuoteJSONString, 1, 1) \ |
+ \ |
+ /* Strings */ \ |
+ F(StringIndexOf, 3, 1) \ |
+ F(StringLastIndexOf, 3, 1) \ |
+ F(StringLocaleCompare, 2, 1) \ |
+ F(StringReplaceGlobalRegExpWithString, 4, 1) \ |
+ F(StringReplaceOneCharWithString, 3, 1) \ |
+ F(StringMatch, 3, 1) \ |
+ F(StringTrim, 3, 1) \ |
+ F(StringToArray, 2, 1) \ |
+ F(NewStringWrapper, 1, 1) \ |
+ F(NewString, 2, 1) \ |
+ F(TruncateString, 2, 1) \ |
+ \ |
+ /* Numbers */ \ |
+ F(NumberToRadixString, 2, 1) \ |
+ F(NumberToFixed, 2, 1) \ |
+ F(NumberToExponential, 2, 1) \ |
+ F(NumberToPrecision, 2, 1) \ |
F(IsValidSmi, 1, 1) |
-#define RUNTIME_FUNCTION_LIST_ALWAYS_2(F) \ |
- /* Reflection */ \ |
- F(FunctionSetInstanceClassName, 2, 1) \ |
- F(FunctionSetLength, 2, 1) \ |
- F(FunctionSetPrototype, 2, 1) \ |
- F(FunctionGetName, 1, 1) \ |
- F(FunctionSetName, 2, 1) \ |
- F(FunctionNameShouldPrintAsAnonymous, 1, 1) \ |
- F(FunctionMarkNameShouldPrintAsAnonymous, 1, 1) \ |
- F(FunctionIsGenerator, 1, 1) \ |
- F(FunctionIsArrow, 1, 1) \ |
- F(FunctionBindArguments, 4, 1) \ |
- F(BoundFunctionGetBindings, 1, 1) \ |
- F(FunctionRemovePrototype, 1, 1) \ |
- F(FunctionGetSourceCode, 1, 1) \ |
- F(FunctionGetScript, 1, 1) \ |
- F(FunctionGetScriptSourcePosition, 1, 1) \ |
- F(FunctionGetPositionForOffset, 2, 1) \ |
- F(FunctionIsAPIFunction, 1, 1) \ |
- F(FunctionIsBuiltin, 1, 1) \ |
- F(GetScript, 1, 1) \ |
- F(CollectStackTrace, 2, 1) \ |
- F(GetV8Version, 0, 1) \ |
- \ |
- F(SetCode, 2, 1) \ |
- \ |
- F(CreateApiFunction, 2, 1) \ |
- F(IsTemplate, 1, 1) \ |
- F(GetTemplateField, 2, 1) \ |
- F(DisableAccessChecks, 1, 1) \ |
- F(EnableAccessChecks, 1, 1) \ |
- \ |
- /* Dates */ \ |
- F(DateCurrentTime, 0, 1) \ |
- F(DateParseString, 2, 1) \ |
- F(DateLocalTimezone, 1, 1) \ |
- F(DateToUTC, 1, 1) \ |
- F(DateMakeDay, 2, 1) \ |
- F(DateSetValue, 3, 1) \ |
- F(DateCacheVersion, 0, 1) \ |
- \ |
- /* Globals */ \ |
- F(CompileString, 2, 1) \ |
- \ |
- /* Eval */ \ |
- F(GlobalProxy, 1, 1) \ |
- F(IsAttachedGlobal, 1, 1) \ |
- \ |
- F(AddNamedProperty, 4, 1) \ |
- F(AddPropertyForTemplate, 4, 1) \ |
- F(SetProperty, 4, 1) \ |
- F(DefineApiAccessorProperty, 5, 1) \ |
- F(DefineDataPropertyUnchecked, 4, 1) \ |
- F(DefineAccessorPropertyUnchecked, 5, 1) \ |
- F(GetDataProperty, 2, 1) \ |
- F(SetHiddenProperty, 3, 1) \ |
- \ |
- /* Arrays */ \ |
- F(RemoveArrayHoles, 2, 1) \ |
- F(GetArrayKeys, 2, 1) \ |
- F(MoveArrayContents, 2, 1) \ |
- F(EstimateNumberOfElements, 1, 1) \ |
- F(NormalizeElements, 1, 1) \ |
- \ |
- /* Getters and Setters */ \ |
- F(LookupAccessor, 3, 1) \ |
- \ |
- /* ES5 */ \ |
- F(ObjectFreeze, 1, 1) \ |
- \ |
- /* Harmony modules */ \ |
- F(IsJSModule, 1, 1) \ |
- \ |
- /* Harmony symbols */ \ |
- F(CreateSymbol, 1, 1) \ |
- F(CreatePrivateSymbol, 1, 1) \ |
- F(CreateGlobalPrivateSymbol, 1, 1) \ |
- F(NewSymbolWrapper, 1, 1) \ |
- F(SymbolDescription, 1, 1) \ |
- F(SymbolRegistry, 0, 1) \ |
- F(SymbolIsPrivate, 1, 1) \ |
- \ |
- /* Harmony proxies */ \ |
- F(CreateJSProxy, 2, 1) \ |
- F(CreateJSFunctionProxy, 4, 1) \ |
- F(IsJSProxy, 1, 1) \ |
- F(IsJSFunctionProxy, 1, 1) \ |
- F(GetHandler, 1, 1) \ |
- F(GetCallTrap, 1, 1) \ |
- F(GetConstructTrap, 1, 1) \ |
- F(Fix, 1, 1) \ |
- \ |
- /* Harmony sets */ \ |
- F(SetInitialize, 1, 1) \ |
- F(SetAdd, 2, 1) \ |
- F(SetHas, 2, 1) \ |
- F(SetDelete, 2, 1) \ |
- F(SetClear, 1, 1) \ |
- F(SetGetSize, 1, 1) \ |
- \ |
- F(SetIteratorInitialize, 3, 1) \ |
- F(SetIteratorNext, 2, 1) \ |
- \ |
- /* Harmony maps */ \ |
- F(MapInitialize, 1, 1) \ |
- F(MapGet, 2, 1) \ |
- F(MapHas, 2, 1) \ |
- F(MapDelete, 2, 1) \ |
- F(MapClear, 1, 1) \ |
- F(MapSet, 3, 1) \ |
- F(MapGetSize, 1, 1) \ |
- \ |
- F(MapIteratorInitialize, 3, 1) \ |
- F(MapIteratorNext, 2, 1) \ |
- \ |
- /* Harmony weak maps and sets */ \ |
- F(WeakCollectionInitialize, 1, 1) \ |
- F(WeakCollectionGet, 2, 1) \ |
- F(WeakCollectionHas, 2, 1) \ |
- F(WeakCollectionDelete, 2, 1) \ |
- F(WeakCollectionSet, 3, 1) \ |
- \ |
- F(GetWeakMapEntries, 1, 1) \ |
- F(GetWeakSetValues, 1, 1) \ |
- \ |
- /* Harmony events */ \ |
- F(EnqueueMicrotask, 1, 1) \ |
- F(RunMicrotasks, 0, 1) \ |
- \ |
- /* Harmony observe */ \ |
- F(IsObserved, 1, 1) \ |
- F(SetIsObserved, 1, 1) \ |
- F(GetObservationState, 0, 1) \ |
- F(ObservationWeakMapCreate, 0, 1) \ |
- F(ObserverObjectAndRecordHaveSameOrigin, 3, 1) \ |
- F(ObjectWasCreatedInCurrentOrigin, 1, 1) \ |
- F(GetObjectContextObjectObserve, 1, 1) \ |
- F(GetObjectContextObjectGetNotifier, 1, 1) \ |
- F(GetObjectContextNotifierPerformChange, 1, 1) \ |
- \ |
- /* Harmony typed arrays */ \ |
- F(ArrayBufferInitialize, 2, 1) \ |
- F(ArrayBufferSliceImpl, 3, 1) \ |
- F(ArrayBufferIsView, 1, 1) \ |
- F(ArrayBufferNeuter, 1, 1) \ |
- \ |
- F(TypedArrayInitializeFromArrayLike, 4, 1) \ |
- F(TypedArrayGetBuffer, 1, 1) \ |
- F(TypedArraySetFastCases, 3, 1) \ |
- \ |
- F(DataViewGetBuffer, 1, 1) \ |
- F(DataViewGetInt8, 3, 1) \ |
- F(DataViewGetUint8, 3, 1) \ |
- F(DataViewGetInt16, 3, 1) \ |
- F(DataViewGetUint16, 3, 1) \ |
- F(DataViewGetInt32, 3, 1) \ |
- F(DataViewGetUint32, 3, 1) \ |
- F(DataViewGetFloat32, 3, 1) \ |
- F(DataViewGetFloat64, 3, 1) \ |
- \ |
- F(DataViewSetInt8, 4, 1) \ |
- F(DataViewSetUint8, 4, 1) \ |
- F(DataViewSetInt16, 4, 1) \ |
- F(DataViewSetUint16, 4, 1) \ |
- F(DataViewSetInt32, 4, 1) \ |
- F(DataViewSetUint32, 4, 1) \ |
- F(DataViewSetFloat32, 4, 1) \ |
- F(DataViewSetFloat64, 4, 1) \ |
- \ |
- /* Statements */ \ |
- F(NewObjectFromBound, 1, 1) \ |
- \ |
- /* Declarations and initialization */ \ |
- F(InitializeVarGlobal, 3, 1) \ |
- F(OptimizeObjectForAddingMultipleProperties, 2, 1) \ |
- \ |
- /* Debugging */ \ |
- F(DebugPrint, 1, 1) \ |
- F(GlobalPrint, 1, 1) \ |
- F(DebugTrace, 0, 1) \ |
- F(TraceEnter, 0, 1) \ |
- F(TraceExit, 1, 1) \ |
- F(Abort, 1, 1) \ |
- F(AbortJS, 1, 1) \ |
- /* ES5 */ \ |
- F(OwnKeys, 1, 1) \ |
- \ |
- /* Message objects */ \ |
- F(MessageGetStartPosition, 1, 1) \ |
- F(MessageGetScript, 1, 1) \ |
- \ |
- /* Pseudo functions - handled as macros by parser */ \ |
- F(IS_VAR, 1, 1) \ |
- \ |
- /* expose boolean functions from objects-inl.h */ \ |
- F(HasFastSmiElements, 1, 1) \ |
- F(HasFastSmiOrObjectElements, 1, 1) \ |
- F(HasFastObjectElements, 1, 1) \ |
- F(HasFastDoubleElements, 1, 1) \ |
- F(HasFastHoleyElements, 1, 1) \ |
- F(HasDictionaryElements, 1, 1) \ |
- F(HasSloppyArgumentsElements, 1, 1) \ |
- F(HasExternalUint8ClampedElements, 1, 1) \ |
- F(HasExternalArrayElements, 1, 1) \ |
- F(HasExternalInt8Elements, 1, 1) \ |
- F(HasExternalUint8Elements, 1, 1) \ |
- F(HasExternalInt16Elements, 1, 1) \ |
- F(HasExternalUint16Elements, 1, 1) \ |
- F(HasExternalInt32Elements, 1, 1) \ |
- F(HasExternalUint32Elements, 1, 1) \ |
- F(HasExternalFloat32Elements, 1, 1) \ |
- F(HasExternalFloat64Elements, 1, 1) \ |
- F(HasFixedUint8ClampedElements, 1, 1) \ |
- F(HasFixedInt8Elements, 1, 1) \ |
- F(HasFixedUint8Elements, 1, 1) \ |
- F(HasFixedInt16Elements, 1, 1) \ |
- F(HasFixedUint16Elements, 1, 1) \ |
- F(HasFixedInt32Elements, 1, 1) \ |
- F(HasFixedUint32Elements, 1, 1) \ |
- F(HasFixedFloat32Elements, 1, 1) \ |
- F(HasFixedFloat64Elements, 1, 1) \ |
- F(HasFastProperties, 1, 1) \ |
- F(TransitionElementsKind, 2, 1) \ |
- F(HaveSameMap, 2, 1) \ |
- F(IsJSGlobalProxy, 1, 1) |
- |
- |
-#define RUNTIME_FUNCTION_LIST_ALWAYS_3(F) \ |
- /* String and Regexp */ \ |
- F(NumberToStringRT, 1, 1) \ |
- F(RegExpConstructResult, 3, 1) \ |
- F(RegExpExecRT, 4, 1) \ |
- F(StringAdd, 2, 1) \ |
- F(SubString, 3, 1) \ |
- F(InternalizeString, 1, 1) \ |
- F(StringCompare, 2, 1) \ |
- F(StringCharCodeAtRT, 2, 1) \ |
- F(GetFromCache, 2, 1) \ |
- \ |
- /* Compilation */ \ |
- F(CompileUnoptimized, 1, 1) \ |
- F(CompileOptimized, 2, 1) \ |
- F(TryInstallOptimizedCode, 1, 1) \ |
- F(NotifyDeoptimized, 1, 1) \ |
- F(NotifyStubFailure, 0, 1) \ |
- \ |
- /* Utilities */ \ |
- F(AllocateInNewSpace, 1, 1) \ |
- F(AllocateInTargetSpace, 2, 1) \ |
- F(AllocateHeapNumber, 0, 1) \ |
- F(NumberToSmi, 1, 1) \ |
- F(NumberToStringSkipCache, 1, 1) \ |
- \ |
- F(NewSloppyArguments, 3, 1) \ |
- F(NewStrictArguments, 3, 1) \ |
- \ |
- /* Harmony generators */ \ |
- F(CreateJSGeneratorObject, 0, 1) \ |
- F(SuspendJSGeneratorObject, 1, 1) \ |
- F(ResumeJSGeneratorObject, 3, 1) \ |
- F(ThrowGeneratorStateError, 1, 1) \ |
- \ |
- /* Arrays */ \ |
- F(ArrayConstructor, -1, 1) \ |
- F(InternalArrayConstructor, -1, 1) \ |
- \ |
- /* Literals */ \ |
- F(MaterializeRegExpLiteral, 4, 1) \ |
- F(CreateObjectLiteral, 4, 1) \ |
- F(CreateArrayLiteral, 4, 1) \ |
- F(CreateArrayLiteralStubBailout, 3, 1) \ |
- \ |
- /* Statements */ \ |
- F(NewClosure, 3, 1) \ |
- F(NewClosureFromStubFailure, 1, 1) \ |
- F(NewObject, 1, 1) \ |
- F(NewObjectWithAllocationSite, 2, 1) \ |
- F(FinalizeInstanceSize, 1, 1) \ |
- F(Throw, 1, 1) \ |
- F(ReThrow, 1, 1) \ |
- F(ThrowReferenceError, 1, 1) \ |
- F(ThrowNotDateError, 0, 1) \ |
- F(StackGuard, 0, 1) \ |
- F(Interrupt, 0, 1) \ |
- F(PromoteScheduledException, 0, 1) \ |
- \ |
- /* Contexts */ \ |
- F(NewGlobalContext, 2, 1) \ |
- F(NewFunctionContext, 1, 1) \ |
- F(PushWithContext, 2, 1) \ |
- F(PushCatchContext, 3, 1) \ |
- F(PushBlockContext, 2, 1) \ |
- F(PushModuleContext, 2, 1) \ |
- F(DeleteLookupSlot, 2, 1) \ |
- F(LoadLookupSlot, 2, 2) \ |
- F(LoadLookupSlotNoReferenceError, 2, 2) \ |
- F(StoreLookupSlot, 4, 1) \ |
- \ |
- /* Declarations and initialization */ \ |
- F(DeclareGlobals, 3, 1) \ |
- F(DeclareModules, 1, 1) \ |
- F(DeclareLookupSlot, 4, 1) \ |
- F(InitializeConstGlobal, 2, 1) \ |
- F(InitializeLegacyConstLookupSlot, 3, 1) \ |
- \ |
- /* Eval */ \ |
- F(ResolvePossiblyDirectEval, 5, 2) \ |
- \ |
- /* Maths */ \ |
- F(MathPowSlow, 2, 1) \ |
+#define RUNTIME_FUNCTION_LIST_ALWAYS_2(F) \ |
+ /* Reflection */ \ |
+ F(FunctionSetInstanceClassName, 2, 1) \ |
+ F(FunctionSetLength, 2, 1) \ |
+ F(FunctionSetPrototype, 2, 1) \ |
+ F(FunctionGetName, 1, 1) \ |
+ F(FunctionSetName, 2, 1) \ |
+ F(FunctionNameShouldPrintAsAnonymous, 1, 1) \ |
+ F(FunctionMarkNameShouldPrintAsAnonymous, 1, 1) \ |
+ F(FunctionIsGenerator, 1, 1) \ |
+ F(FunctionIsArrow, 1, 1) \ |
+ F(FunctionBindArguments, 4, 1) \ |
+ F(BoundFunctionGetBindings, 1, 1) \ |
+ F(FunctionRemovePrototype, 1, 1) \ |
+ F(FunctionGetSourceCode, 1, 1) \ |
+ F(FunctionGetScript, 1, 1) \ |
+ F(FunctionGetScriptSourcePosition, 1, 1) \ |
+ F(FunctionGetPositionForOffset, 2, 1) \ |
+ F(FunctionIsAPIFunction, 1, 1) \ |
+ F(FunctionIsBuiltin, 1, 1) \ |
+ F(GetScript, 1, 1) \ |
+ F(CollectStackTrace, 2, 1) \ |
+ F(GetV8Version, 0, 1) \ |
+ \ |
+ F(SetCode, 2, 1) \ |
+ \ |
+ F(CreateApiFunction, 2, 1) \ |
+ F(IsTemplate, 1, 1) \ |
+ F(GetTemplateField, 2, 1) \ |
+ F(DisableAccessChecks, 1, 1) \ |
+ F(EnableAccessChecks, 1, 1) \ |
+ \ |
+ /* Dates */ \ |
+ F(DateCurrentTime, 0, 1) \ |
+ F(DateParseString, 2, 1) \ |
+ F(DateLocalTimezone, 1, 1) \ |
+ F(DateToUTC, 1, 1) \ |
+ F(DateMakeDay, 2, 1) \ |
+ F(DateSetValue, 3, 1) \ |
+ F(DateCacheVersion, 0, 1) \ |
+ \ |
+ /* Globals */ \ |
+ F(CompileString, 2, 1) \ |
+ \ |
+ /* Eval */ \ |
+ F(GlobalProxy, 1, 1) \ |
+ F(IsAttachedGlobal, 1, 1) \ |
+ \ |
+ F(AddNamedProperty, 4, 1) \ |
+ F(AddPropertyForTemplate, 4, 1) \ |
+ F(SetProperty, 4, 1) \ |
+ F(DefineApiAccessorProperty, 5, 1) \ |
+ F(DefineDataPropertyUnchecked, 4, 1) \ |
+ F(DefineAccessorPropertyUnchecked, 5, 1) \ |
+ F(GetDataProperty, 2, 1) \ |
+ F(SetHiddenProperty, 3, 1) \ |
+ \ |
+ /* Arrays */ \ |
+ F(RemoveArrayHoles, 2, 1) \ |
+ F(GetArrayKeys, 2, 1) \ |
+ F(MoveArrayContents, 2, 1) \ |
+ F(EstimateNumberOfElements, 1, 1) \ |
+ F(NormalizeElements, 1, 1) \ |
+ \ |
+ /* Getters and Setters */ \ |
+ F(LookupAccessor, 3, 1) \ |
+ \ |
+ /* ES5 */ \ |
+ F(ObjectFreeze, 1, 1) \ |
+ \ |
+ /* Harmony modules */ \ |
+ F(IsJSModule, 1, 1) \ |
+ \ |
+ /* Harmony symbols */ \ |
+ F(CreateSymbol, 1, 1) \ |
+ F(CreatePrivateSymbol, 1, 1) \ |
+ F(CreateGlobalPrivateSymbol, 1, 1) \ |
+ F(NewSymbolWrapper, 1, 1) \ |
+ F(SymbolDescription, 1, 1) \ |
+ F(SymbolRegistry, 0, 1) \ |
+ F(SymbolIsPrivate, 1, 1) \ |
+ \ |
+ /* Harmony proxies */ \ |
+ F(CreateJSProxy, 2, 1) \ |
+ F(CreateJSFunctionProxy, 4, 1) \ |
+ F(IsJSProxy, 1, 1) \ |
+ F(IsJSFunctionProxy, 1, 1) \ |
+ F(GetHandler, 1, 1) \ |
+ F(GetCallTrap, 1, 1) \ |
+ F(GetConstructTrap, 1, 1) \ |
+ F(Fix, 1, 1) \ |
+ \ |
+ /* Harmony sets */ \ |
+ F(SetInitialize, 1, 1) \ |
+ F(SetAdd, 2, 1) \ |
+ F(SetHas, 2, 1) \ |
+ F(SetDelete, 2, 1) \ |
+ F(SetClear, 1, 1) \ |
+ F(SetGetSize, 1, 1) \ |
+ \ |
+ F(SetIteratorInitialize, 3, 1) \ |
+ F(SetIteratorNext, 2, 1) \ |
+ \ |
+ /* Harmony maps */ \ |
+ F(MapInitialize, 1, 1) \ |
+ F(MapGet, 2, 1) \ |
+ F(MapHas, 2, 1) \ |
+ F(MapDelete, 2, 1) \ |
+ F(MapClear, 1, 1) \ |
+ F(MapSet, 3, 1) \ |
+ F(MapGetSize, 1, 1) \ |
+ \ |
+ F(MapIteratorInitialize, 3, 1) \ |
+ F(MapIteratorNext, 2, 1) \ |
+ \ |
+ /* Harmony weak maps and sets */ \ |
+ F(WeakCollectionInitialize, 1, 1) \ |
+ F(WeakCollectionGet, 2, 1) \ |
+ F(WeakCollectionHas, 2, 1) \ |
+ F(WeakCollectionDelete, 2, 1) \ |
+ F(WeakCollectionSet, 3, 1) \ |
+ \ |
+ F(GetWeakMapEntries, 1, 1) \ |
+ F(GetWeakSetValues, 1, 1) \ |
+ \ |
+ /* Harmony events */ \ |
+ F(EnqueueMicrotask, 1, 1) \ |
+ F(RunMicrotasks, 0, 1) \ |
+ \ |
+ /* Harmony observe */ \ |
+ F(IsObserved, 1, 1) \ |
+ F(SetIsObserved, 1, 1) \ |
+ F(GetObservationState, 0, 1) \ |
+ F(ObservationWeakMapCreate, 0, 1) \ |
+ F(ObserverObjectAndRecordHaveSameOrigin, 3, 1) \ |
+ F(ObjectWasCreatedInCurrentOrigin, 1, 1) \ |
+ F(GetObjectContextObjectObserve, 1, 1) \ |
+ F(GetObjectContextObjectGetNotifier, 1, 1) \ |
+ F(GetObjectContextNotifierPerformChange, 1, 1) \ |
+ \ |
+ /* Harmony typed arrays */ \ |
+ F(ArrayBufferInitialize, 2, 1) \ |
+ F(ArrayBufferSliceImpl, 3, 1) \ |
+ F(ArrayBufferIsView, 1, 1) \ |
+ F(ArrayBufferNeuter, 1, 1) \ |
+ \ |
+ F(TypedArrayInitializeFromArrayLike, 4, 1) \ |
+ F(TypedArrayGetBuffer, 1, 1) \ |
+ F(TypedArraySetFastCases, 3, 1) \ |
+ \ |
+ F(DataViewGetBuffer, 1, 1) \ |
+ F(DataViewGetInt8, 3, 1) \ |
+ F(DataViewGetUint8, 3, 1) \ |
+ F(DataViewGetInt16, 3, 1) \ |
+ F(DataViewGetUint16, 3, 1) \ |
+ F(DataViewGetInt32, 3, 1) \ |
+ F(DataViewGetUint32, 3, 1) \ |
+ F(DataViewGetFloat32, 3, 1) \ |
+ F(DataViewGetFloat64, 3, 1) \ |
+ \ |
+ F(DataViewSetInt8, 4, 1) \ |
+ F(DataViewSetUint8, 4, 1) \ |
+ F(DataViewSetInt16, 4, 1) \ |
+ F(DataViewSetUint16, 4, 1) \ |
+ F(DataViewSetInt32, 4, 1) \ |
+ F(DataViewSetUint32, 4, 1) \ |
+ F(DataViewSetFloat32, 4, 1) \ |
+ F(DataViewSetFloat64, 4, 1) \ |
+ \ |
+ /* Statements */ \ |
+ F(NewObjectFromBound, 1, 1) \ |
+ \ |
+ /* Declarations and initialization */ \ |
+ F(InitializeVarGlobal, 3, 1) \ |
+ F(OptimizeObjectForAddingMultipleProperties, 2, 1) \ |
+ \ |
+ /* Debugging */ \ |
+ F(DebugPrint, 1, 1) \ |
+ F(GlobalPrint, 1, 1) \ |
+ F(DebugTrace, 0, 1) \ |
+ F(TraceEnter, 0, 1) \ |
+ F(TraceExit, 1, 1) \ |
+ F(Abort, 1, 1) \ |
+ F(AbortJS, 1, 1) \ |
+ /* ES5 */ \ |
+ F(OwnKeys, 1, 1) \ |
+ \ |
+ /* Message objects */ \ |
+ F(MessageGetStartPosition, 1, 1) \ |
+ F(MessageGetScript, 1, 1) \ |
+ \ |
+ /* Pseudo functions - handled as macros by parser */ \ |
+ F(IS_VAR, 1, 1) \ |
+ \ |
+ /* expose boolean functions from objects-inl.h */ \ |
+ F(HasFastSmiElements, 1, 1) \ |
+ F(HasFastSmiOrObjectElements, 1, 1) \ |
+ F(HasFastObjectElements, 1, 1) \ |
+ F(HasFastDoubleElements, 1, 1) \ |
+ F(HasFastHoleyElements, 1, 1) \ |
+ F(HasDictionaryElements, 1, 1) \ |
+ F(HasSloppyArgumentsElements, 1, 1) \ |
+ F(HasExternalUint8ClampedElements, 1, 1) \ |
+ F(HasExternalArrayElements, 1, 1) \ |
+ F(HasExternalInt8Elements, 1, 1) \ |
+ F(HasExternalUint8Elements, 1, 1) \ |
+ F(HasExternalInt16Elements, 1, 1) \ |
+ F(HasExternalUint16Elements, 1, 1) \ |
+ F(HasExternalInt32Elements, 1, 1) \ |
+ F(HasExternalUint32Elements, 1, 1) \ |
+ F(HasExternalFloat32Elements, 1, 1) \ |
+ F(HasExternalFloat64Elements, 1, 1) \ |
+ F(HasFixedUint8ClampedElements, 1, 1) \ |
+ F(HasFixedInt8Elements, 1, 1) \ |
+ F(HasFixedUint8Elements, 1, 1) \ |
+ F(HasFixedInt16Elements, 1, 1) \ |
+ F(HasFixedUint16Elements, 1, 1) \ |
+ F(HasFixedInt32Elements, 1, 1) \ |
+ F(HasFixedUint32Elements, 1, 1) \ |
+ F(HasFixedFloat32Elements, 1, 1) \ |
+ F(HasFixedFloat64Elements, 1, 1) \ |
+ F(HasFastProperties, 1, 1) \ |
+ F(TransitionElementsKind, 2, 1) \ |
+ F(HaveSameMap, 2, 1) \ |
+ F(IsJSGlobalProxy, 1, 1) \ |
+ F(ForInInit, 2, 2) /* TODO(turbofan): Only temporary */ \ |
+ F(ForInNext, 4, 2) /* TODO(turbofan): Only temporary */ \ |
+ F(ForInCacheArrayLength, 2, 1) /* TODO(turbofan): Only temporary */ |
+ |
+ |
+#define RUNTIME_FUNCTION_LIST_ALWAYS_3(F) \ |
+ /* String and Regexp */ \ |
+ F(NumberToStringRT, 1, 1) \ |
+ F(RegExpConstructResult, 3, 1) \ |
+ F(RegExpExecRT, 4, 1) \ |
+ F(StringAdd, 2, 1) \ |
+ F(SubString, 3, 1) \ |
+ F(InternalizeString, 1, 1) \ |
+ F(StringCompare, 2, 1) \ |
+ F(StringCharCodeAtRT, 2, 1) \ |
+ F(GetFromCache, 2, 1) \ |
+ \ |
+ /* Compilation */ \ |
+ F(CompileUnoptimized, 1, 1) \ |
+ F(CompileOptimized, 2, 1) \ |
+ F(TryInstallOptimizedCode, 1, 1) \ |
+ F(NotifyDeoptimized, 1, 1) \ |
+ F(NotifyStubFailure, 0, 1) \ |
+ \ |
+ /* Utilities */ \ |
+ F(AllocateInNewSpace, 1, 1) \ |
+ F(AllocateInTargetSpace, 2, 1) \ |
+ F(AllocateHeapNumber, 0, 1) \ |
+ F(NumberToSmi, 1, 1) \ |
+ F(NumberToStringSkipCache, 1, 1) \ |
+ \ |
+ F(NewArguments, 1, 1) /* TODO(turbofan): Only temporary */ \ |
+ F(NewSloppyArguments, 3, 1) \ |
+ F(NewStrictArguments, 3, 1) \ |
+ \ |
+ /* Harmony generators */ \ |
+ F(CreateJSGeneratorObject, 0, 1) \ |
+ F(SuspendJSGeneratorObject, 1, 1) \ |
+ F(ResumeJSGeneratorObject, 3, 1) \ |
+ F(ThrowGeneratorStateError, 1, 1) \ |
+ \ |
+ /* Arrays */ \ |
+ F(ArrayConstructor, -1, 1) \ |
+ F(InternalArrayConstructor, -1, 1) \ |
+ \ |
+ /* Literals */ \ |
+ F(MaterializeRegExpLiteral, 4, 1) \ |
+ F(CreateObjectLiteral, 4, 1) \ |
+ F(CreateArrayLiteral, 4, 1) \ |
+ F(CreateArrayLiteralStubBailout, 3, 1) \ |
+ \ |
+ /* Statements */ \ |
+ F(NewClosure, 3, 1) \ |
+ F(NewClosureFromStubFailure, 1, 1) \ |
+ F(NewObject, 1, 1) \ |
+ F(NewObjectWithAllocationSite, 2, 1) \ |
+ F(FinalizeInstanceSize, 1, 1) \ |
+ F(Throw, 1, 1) \ |
+ F(ReThrow, 1, 1) \ |
+ F(ThrowReferenceError, 1, 1) \ |
+ F(ThrowNotDateError, 0, 1) \ |
+ F(StackGuard, 0, 1) \ |
+ F(Interrupt, 0, 1) \ |
+ F(PromoteScheduledException, 0, 1) \ |
+ \ |
+ /* Contexts */ \ |
+ F(NewGlobalContext, 2, 1) \ |
+ F(NewFunctionContext, 1, 1) \ |
+ F(PushWithContext, 2, 1) \ |
+ F(PushCatchContext, 3, 1) \ |
+ F(PushBlockContext, 2, 1) \ |
+ F(PushModuleContext, 2, 1) \ |
+ F(DeleteLookupSlot, 2, 1) \ |
+ F(LoadLookupSlot, 2, 2) \ |
+ F(LoadContextRelative, 3, 1) /* TODO(turbofan): Only temporary */ \ |
+ F(LoadLookupSlotNoReferenceError, 2, 2) \ |
+ F(StoreLookupSlot, 4, 1) \ |
+ F(StoreContextRelative, 4, 1) /* TODO(turbofan): Only temporary */ \ |
+ \ |
+ /* Declarations and initialization */ \ |
+ F(DeclareGlobals, 3, 1) \ |
+ F(DeclareModules, 1, 1) \ |
+ F(DeclareLookupSlot, 4, 1) \ |
+ F(InitializeConstGlobal, 2, 1) \ |
+ F(InitializeLegacyConstLookupSlot, 3, 1) \ |
+ \ |
+ /* Eval */ \ |
+ F(ResolvePossiblyDirectEval, 5, 2) \ |
+ \ |
+ /* Maths */ \ |
+ F(MathPowSlow, 2, 1) \ |
F(MathPowRT, 2, 1) |
@@ -790,6 +799,9 @@ class Runtime : public AllStatic { |
// Get the intrinsic function with the given FunctionId. |
static const Function* FunctionForId(FunctionId id); |
+ // Get the intrinsic function with the given function entry address. |
+ static const Function* FunctionForEntry(Address ref); |
+ |
// General-purpose helper functions for runtime system. |
static int StringMatch(Isolate* isolate, |
Handle<String> sub, |