diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
index 9e6c495..283087a 100644
--- a/src/runtime/runtime.h
+++ b/src/runtime/runtime.h
@@ -7,776 +7,1100 @@
 
 #include "src/allocation.h"
 #include "src/objects.h"
+#include "src/unicode.h"
 #include "src/zone.h"
 
 namespace v8 {
 namespace internal {
 
-// The interface to C++ runtime functions.
-
-// ----------------------------------------------------------------------------
-// RUNTIME_FUNCTION_LIST_ALWAYS defines runtime calls available in both
-// release and debug mode.
-// This macro should only be used by the macro RUNTIME_FUNCTION_LIST.
-
-// 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(SetPrototype, 2, 1)                                    \
-  F(InternalSetPrototype, 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(DebugPushPromise, 1, 1)                                \
-  F(DebugPopPromise, 0, 1)                                 \
-  F(DebugPromiseEvent, 1, 1)                               \
-  F(DebugAsyncTaskEvent, 1, 1)                             \
-  F(PromiseRejectEvent, 3, 1)                              \
-  F(PromiseRevokeReject, 1, 1)                             \
-  F(PromiseHasHandlerSymbol, 0, 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)                                      \
-  F(RemPiO2, 1, 1)                                         \
-                                                           \
-  /* Regular expressions */                                \
-  F(RegExpInitializeAndCompile, 3, 1)                      \
-  F(RegExpExecMultiple, 4, 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)                                      \
-                                                           \
-  /* Classes support */                                    \
-  F(ToMethod, 2, 1)                                        \
-  F(HomeObjectSymbol, 0, 1)                                \
-  F(DefineClass, 6, 1)                                     \
-  F(DefineClassMethod, 3, 1)                               \
-  F(DefineClassGetter, 3, 1)                               \
-  F(DefineClassSetter, 3, 1)                               \
-  F(ClassGetSourceCode, 1, 1)                              \
-  F(ThrowNonMethodError, 0, 1)                             \
-  F(ThrowUnsupportedSuperError, 0, 1)                      \
-  F(LoadFromSuper, 3, 1)                                   \
-  F(LoadKeyedFromSuper, 3, 1)                              \
-  F(StoreToSuper_Strict, 4, 1)                             \
-  F(StoreToSuper_Sloppy, 4, 1)                             \
-  F(StoreKeyedToSuper_Strict, 4, 1)                        \
-  F(StoreKeyedToSuper_Sloppy, 4, 1)                        \
-  F(DefaultConstructorSuperCall, 0, 1)
+// * Each intrinsic is consistently exposed in JavaScript via 2 names:
+//    * %#name, which is always a runtime call.
+//    * %_#name, which can be inlined or just a runtime call, the compiler in
+//      question decides.
+//
+// * IntrinsicTypes are Runtime::RUNTIME and Runtime::INLINE, respectively.
+//
+// * IDs are Runtime::k##name and Runtime::kInline##name, respectively.
+//
+// * All intrinsics have a C++ implementation Runtime_##name.
+//
+// * Each compiler has an explicit list of intrisics it supports, falling back
+//   to a simple runtime call if necessary.
 
 
-#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(FunctionIsConciseMethod, 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(GeneratorGetFunction, 1, 1)                        \
-  F(GeneratorGetContext, 1, 1)                         \
-  F(GeneratorGetReceiver, 1, 1)                        \
-  F(GeneratorGetContinuation, 1, 1)                    \
-  F(GeneratorGetSourcePosition, 1, 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, 3, 1)                               \
-                                                       \
-  /* Eval */                                           \
-  F(GlobalProxy, 1, 1)                                 \
-                                                       \
-  F(AddNamedProperty, 4, 1)                            \
-  F(AddPropertyForTemplate, 4, 1)                      \
-  F(SetProperty, 4, 1)                                 \
-  F(AddElement, 4, 1)                                  \
-  F(DefineApiAccessorProperty, 5, 1)                   \
-  F(DefineDataPropertyUnchecked, 4, 1)                 \
-  F(DefineAccessorPropertyUnchecked, 5, 1)             \
-  F(GetDataProperty, 2, 1)                             \
-                                                       \
-  /* Arrays */                                         \
-  F(RemoveArrayHoles, 2, 1)                            \
-  F(GetArrayKeys, 2, 1)                                \
-  F(MoveArrayContents, 2, 1)                           \
-  F(EstimateNumberOfElements, 1, 1)                    \
-  F(NormalizeElements, 1, 1)                           \
-  F(HasComplexElements, 1, 1)                          \
-                                                       \
-  /* Getters and Setters */                            \
-  F(LookupAccessor, 3, 1)                              \
-                                                       \
-  /* ES5 */                                            \
-  F(ObjectSeal, 1, 1)                                  \
-  F(ObjectFreeze, 1, 1)                                \
-                                                       \
-  /* Harmony modules */                                \
-  F(IsJSModule, 1, 1)                                  \
-                                                       \
-  /* Harmony symbols */                                \
-  F(CreateSymbol, 1, 1)                                \
-  F(CreatePrivateSymbol, 1, 1)                         \
-  F(CreateGlobalPrivateOwnSymbol, 1, 1)                \
-  F(CreatePrivateOwnSymbol, 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(IsJSFunctionProxy, 1, 1)                           \
-  F(GetHandler, 1, 1)                                  \
-  F(GetCallTrap, 1, 1)                                 \
-  F(GetConstructTrap, 1, 1)                            \
-  F(Fix, 1, 1)                                         \
-                                                       \
-  /* ES6 collection iterators */                       \
-  F(SetIteratorInitialize, 3, 1)                       \
-  F(SetIteratorClone, 1, 1)                            \
-  F(SetIteratorNext, 2, 1)                             \
-  F(SetIteratorDetails, 1, 1)                          \
-  F(MapIteratorInitialize, 3, 1)                       \
-  F(MapIteratorClone, 1, 1)                            \
-  F(MapIteratorNext, 2, 1)                             \
-  F(MapIteratorDetails, 1, 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, 2, 1)                           \
-  F(GetWeakSetValues, 2, 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)       \
-  F(DeliverObservationChangeRecords, 2, 1)             \
-                                                       \
-  /* Harmony typed arrays */                           \
-  F(ArrayBufferInitialize, 2, 1)                       \
-  F(ArrayBufferSliceImpl, 3, 1)                        \
-  F(ArrayBufferIsView, 1, 1)                           \
-  F(ArrayBufferNeuter, 1, 1)                           \
-                                                       \
-  F(IsTypedArray, 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)                                     \
-  F(NativeScriptsCount, 0, 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(ForInCacheArrayLength, 2, 1) /* TODO(turbofan): Only temporary */
+// Entries have the form F(name, number of arguments, number of values):
+
+#define FOR_EACH_INTRINSIC_ARRAY(F)  \
+  F(FinishArrayPrototypeSetup, 1, 1) \
+  F(SpecialArrayFunctions, 0, 1)     \
+  F(TransitionElementsKind, 2, 1)    \
+  F(PushIfAbsent, 2, 1)              \
+  F(RemoveArrayHoles, 2, 1)          \
+  F(MoveArrayContents, 2, 1)         \
+  F(EstimateNumberOfElements, 1, 1)  \
+  F(GetArrayKeys, 2, 1)              \
+  F(ArrayConstructor, -1, 1)         \
+  F(NewArray, -1 /* >= 3 */, 1)      \
+  F(InternalArrayConstructor, -1, 1) \
+  F(NormalizeElements, 1, 1)         \
+  F(GrowArrayElements, 2, 1)         \
+  F(HasComplexElements, 1, 1)        \
+  F(IsArray, 1, 1)                   \
+  F(HasCachedArrayIndex, 1, 1)       \
+  F(GetCachedArrayIndex, 1, 1)       \
+  F(FixedArrayGet, 2, 1)             \
+  F(FixedArraySet, 3, 1)             \
+  F(FastOneByteArrayJoin, 2, 1)      \
+  F(ArraySpeciesConstructor, 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(CompileLazy, 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(GeneratorClose, 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(ThrowConstAssignError, 0, 1)                             \
-  F(StackGuard, 0, 1)                                        \
-  F(Interrupt, 0, 1)                                         \
-  F(PromoteScheduledException, 0, 1)                         \
-                                                             \
-  /* Contexts */                                             \
-  F(NewScriptContext, 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(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)                   \
-                                                             \
-  /* Maths */                                                \
-  F(MathPowSlow, 2, 1)                                       \
-  F(MathPowRT, 2, 1)
+#define FOR_EACH_INTRINSIC_ATOMICS(F) \
+  F(AtomicsCompareExchange, 4, 1)     \
+  F(AtomicsLoad, 2, 1)                \
+  F(AtomicsStore, 3, 1)               \
+  F(AtomicsAdd, 3, 1)                 \
+  F(AtomicsSub, 3, 1)                 \
+  F(AtomicsAnd, 3, 1)                 \
+  F(AtomicsOr, 3, 1)                  \
+  F(AtomicsXor, 3, 1)                 \
+  F(AtomicsExchange, 3, 1)            \
+  F(AtomicsIsLockFree, 1, 1)
 
 
-#define RUNTIME_FUNCTION_LIST_RETURN_PAIR(F)              \
-  F(LoadLookupSlot, 2, 2)                                 \
-  F(LoadLookupSlotNoReferenceError, 2, 2)                 \
-  F(ResolvePossiblyDirectEval, 6, 2)                      \
-  F(ForInInit, 2, 2) /* TODO(turbofan): Only temporary */ \
-  F(ForInNext, 4, 2) /* TODO(turbofan): Only temporary */
+#define FOR_EACH_INTRINSIC_FUTEX(F)  \
+  F(AtomicsFutexWait, 4, 1)          \
+  F(AtomicsFutexWake, 3, 1)          \
+  F(AtomicsFutexWakeOrRequeue, 5, 1) \
+  F(AtomicsFutexNumWaitersForTesting, 2, 1)
 
 
-#define RUNTIME_FUNCTION_LIST_DEBUGGER(F)           \
-  /* Debugger support*/                             \
-  F(DebugBreak, 0, 1)                               \
-  F(SetDebugEventListener, 2, 1)                    \
-  F(Break, 0, 1)                                    \
-  F(DebugGetPropertyDetails, 2, 1)                  \
-  F(DebugGetProperty, 2, 1)                         \
-  F(DebugPropertyTypeFromDetails, 1, 1)             \
-  F(DebugPropertyAttributesFromDetails, 1, 1)       \
-  F(DebugPropertyIndexFromDetails, 1, 1)            \
-  F(DebugNamedInterceptorPropertyValue, 2, 1)       \
-  F(DebugIndexedInterceptorElementValue, 2, 1)      \
-  F(CheckExecutionState, 1, 1)                      \
-  F(GetFrameCount, 1, 1)                            \
-  F(GetFrameDetails, 2, 1)                          \
-  F(GetScopeCount, 2, 1)                            \
-  F(GetStepInPositions, 2, 1)                       \
-  F(GetScopeDetails, 4, 1)                          \
-  F(GetAllScopesDetails, 4, 1)                      \
-  F(GetFunctionScopeCount, 1, 1)                    \
-  F(GetFunctionScopeDetails, 2, 1)                  \
-  F(SetScopeVariableValue, 6, 1)                    \
-  F(DebugPrintScopes, 0, 1)                         \
-  F(GetThreadCount, 1, 1)                           \
-  F(GetThreadDetails, 2, 1)                         \
-  F(SetDisableBreak, 1, 1)                          \
-  F(GetBreakLocations, 2, 1)                        \
-  F(SetFunctionBreakPoint, 3, 1)                    \
-  F(SetScriptBreakPoint, 4, 1)                      \
-  F(ClearBreakPoint, 1, 1)                          \
-  F(ChangeBreakOnException, 2, 1)                   \
-  F(IsBreakOnException, 1, 1)                       \
-  F(PrepareStep, 4, 1)                              \
-  F(ClearStepping, 0, 1)                            \
-  F(DebugEvaluate, 6, 1)                            \
-  F(DebugEvaluateGlobal, 4, 1)                      \
-  F(DebugGetLoadedScripts, 0, 1)                    \
-  F(DebugReferencedBy, 3, 1)                        \
-  F(DebugConstructedBy, 2, 1)                       \
-  F(DebugGetPrototype, 1, 1)                        \
-  F(DebugSetScriptSource, 2, 1)                     \
-  F(DebugCallbackSupportsStepping, 1, 1)            \
-  F(SystemBreak, 0, 1)                              \
-  F(DebugDisassembleFunction, 1, 1)                 \
-  F(DebugDisassembleConstructor, 1, 1)              \
-  F(FunctionGetInferredName, 1, 1)                  \
-  F(LiveEditFindSharedFunctionInfosForScript, 1, 1) \
-  F(LiveEditGatherCompileInfo, 2, 1)                \
-  F(LiveEditReplaceScript, 3, 1)                    \
-  F(LiveEditReplaceFunctionCode, 2, 1)              \
-  F(LiveEditFunctionSourceUpdated, 1, 1)            \
-  F(LiveEditFunctionSetScript, 2, 1)                \
-  F(LiveEditReplaceRefToNestedFunction, 3, 1)       \
-  F(LiveEditPatchFunctionPositions, 2, 1)           \
-  F(LiveEditCheckAndDropActivations, 2, 1)          \
-  F(LiveEditCompareStrings, 2, 1)                   \
-  F(LiveEditRestartFrame, 2, 1)                     \
-  F(GetFunctionCodePositionFromSource, 2, 1)        \
-  F(ExecuteInDebugContext, 2, 1)                    \
-                                                    \
-  F(SetFlags, 1, 1)                                 \
-  F(CollectGarbage, 1, 1)                           \
-  F(GetHeapUsage, 0, 1)
+#define FOR_EACH_INTRINSIC_CLASSES(F)       \
+  F(ThrowNonMethodError, 0, 1)              \
+  F(ThrowUnsupportedSuperError, 0, 1)       \
+  F(ThrowConstructorNonCallableError, 1, 1) \
+  F(ThrowArrayNotSubclassableError, 0, 1)   \
+  F(ThrowStaticPrototypeError, 0, 1)        \
+  F(ThrowIfStaticPrototype, 1, 1)           \
+  F(HomeObjectSymbol, 0, 1)                 \
+  F(DefineClass, 5, 1)                      \
+  F(FinalizeClassDefinition, 2, 1)          \
+  F(DefineClassMethod, 3, 1)                \
+  F(LoadFromSuper, 4, 1)                    \
+  F(LoadKeyedFromSuper, 4, 1)               \
+  F(StoreToSuper_Strict, 4, 1)              \
+  F(StoreToSuper_Sloppy, 4, 1)              \
+  F(StoreKeyedToSuper_Strict, 4, 1)         \
+  F(StoreKeyedToSuper_Sloppy, 4, 1)         \
+  F(GetSuperConstructor, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_COLLECTIONS(F) \
+  F(StringGetRawHashField, 1, 1)          \
+  F(TheHole, 0, 1)                        \
+  F(JSCollectionGetTable, 1, 1)           \
+  F(GenericHash, 1, 1)                    \
+  F(SetInitialize, 1, 1)                  \
+  F(SetGrow, 1, 1)                        \
+  F(SetShrink, 1, 1)                      \
+  F(SetClear, 1, 1)                       \
+  F(SetIteratorInitialize, 3, 1)          \
+  F(SetIteratorClone, 1, 1)               \
+  F(SetIteratorNext, 2, 1)                \
+  F(SetIteratorDetails, 1, 1)             \
+  F(MapInitialize, 1, 1)                  \
+  F(MapShrink, 1, 1)                      \
+  F(MapClear, 1, 1)                       \
+  F(MapGrow, 1, 1)                        \
+  F(MapIteratorInitialize, 3, 1)          \
+  F(MapIteratorClone, 1, 1)               \
+  F(MapIteratorDetails, 1, 1)             \
+  F(GetWeakMapEntries, 2, 1)              \
+  F(MapIteratorNext, 2, 1)                \
+  F(WeakCollectionInitialize, 1, 1)       \
+  F(WeakCollectionGet, 3, 1)              \
+  F(WeakCollectionHas, 3, 1)              \
+  F(WeakCollectionDelete, 3, 1)           \
+  F(WeakCollectionSet, 4, 1)              \
+  F(GetWeakSetValues, 2, 1)               \
+  F(ObservationWeakMapCreate, 0, 1)
+
+
+#define FOR_EACH_INTRINSIC_COMPILER(F)    \
+  F(CompileLazy, 1, 1)                    \
+  F(CompileOptimized_Concurrent, 1, 1)    \
+  F(CompileOptimized_NotConcurrent, 1, 1) \
+  F(NotifyStubFailure, 0, 1)              \
+  F(NotifyDeoptimized, 1, 1)              \
+  F(CompileForOnStackReplacement, 1, 1)   \
+  F(TryInstallOptimizedCode, 1, 1)        \
+  F(ResolvePossiblyDirectEval, 5, 1)
+
+
+#define FOR_EACH_INTRINSIC_DATE(F) \
+  F(IsDate, 1, 1)                  \
+  F(DateCurrentTime, 0, 1)         \
+  F(ThrowNotDateError, 0, 1)
+
+
+#define FOR_EACH_INTRINSIC_DEBUG(F)            \
+  F(HandleDebuggerStatement, 0, 1)             \
+  F(DebugBreak, 0, 1)                          \
+  F(SetDebugEventListener, 2, 1)               \
+  F(ScheduleBreak, 0, 1)                       \
+  F(DebugGetInternalProperties, 1, 1)          \
+  F(DebugGetPropertyDetails, 2, 1)             \
+  F(DebugGetProperty, 2, 1)                    \
+  F(DebugPropertyTypeFromDetails, 1, 1)        \
+  F(DebugPropertyAttributesFromDetails, 1, 1)  \
+  F(DebugPropertyIndexFromDetails, 1, 1)       \
+  F(DebugNamedInterceptorPropertyValue, 2, 1)  \
+  F(DebugIndexedInterceptorElementValue, 2, 1) \
+  F(CheckExecutionState, 1, 1)                 \
+  F(GetFrameCount, 1, 1)                       \
+  F(GetFrameDetails, 2, 1)                     \
+  F(GetScopeCount, 2, 1)                       \
+  F(GetStepInPositions, 2, 1)                  \
+  F(GetScopeDetails, 4, 1)                     \
+  F(GetAllScopesDetails, 4, 1)                 \
+  F(GetFunctionScopeCount, 1, 1)               \
+  F(GetFunctionScopeDetails, 2, 1)             \
+  F(SetScopeVariableValue, 6, 1)               \
+  F(DebugPrintScopes, 0, 1)                    \
+  F(GetThreadCount, 1, 1)                      \
+  F(GetThreadDetails, 2, 1)                    \
+  F(SetBreakPointsActive, 1, 1)                \
+  F(GetBreakLocations, 2, 1)                   \
+  F(SetFunctionBreakPoint, 3, 1)               \
+  F(SetScriptBreakPoint, 4, 1)                 \
+  F(ClearBreakPoint, 1, 1)                     \
+  F(ChangeBreakOnException, 2, 1)              \
+  F(IsBreakOnException, 1, 1)                  \
+  F(PrepareStep, 2, 1)                         \
+  F(ClearStepping, 0, 1)                       \
+  F(DebugEvaluate, 6, 1)                       \
+  F(DebugEvaluateGlobal, 4, 1)                 \
+  F(DebugGetLoadedScripts, 0, 1)               \
+  F(DebugReferencedBy, 3, 1)                   \
+  F(DebugConstructedBy, 2, 1)                  \
+  F(DebugGetPrototype, 1, 1)                   \
+  F(DebugSetScriptSource, 2, 1)                \
+  F(FunctionGetInferredName, 1, 1)             \
+  F(FunctionGetDebugName, 1, 1)                \
+  F(GetFunctionCodePositionFromSource, 2, 1)   \
+  F(ExecuteInDebugContext, 1, 1)               \
+  F(GetDebugContext, 0, 1)                     \
+  F(CollectGarbage, 1, 1)                      \
+  F(GetHeapUsage, 0, 1)                        \
+  F(GetScript, 1, 1)                           \
+  F(DebugPrepareStepInIfStepping, 1, 1)        \
+  F(DebugPushPromise, 2, 1)                    \
+  F(DebugPopPromise, 0, 1)                     \
+  F(DebugPromiseEvent, 1, 1)                   \
+  F(DebugAsyncTaskEvent, 1, 1)                 \
+  F(DebugIsActive, 0, 1)                       \
+  F(DebugBreakInOptimizedCode, 0, 1)
+
+
+#define FOR_EACH_INTRINSIC_FORIN(F) \
+  F(ForInDone, 2, 1)                \
+  F(ForInFilter, 2, 1)              \
+  F(ForInNext, 4, 1)                \
+  F(ForInStep, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_INTERPRETER(F) \
+  F(InterpreterEquals, 2, 1)              \
+  F(InterpreterNotEquals, 2, 1)           \
+  F(InterpreterStrictEquals, 2, 1)        \
+  F(InterpreterStrictNotEquals, 2, 1)     \
+  F(InterpreterLessThan, 2, 1)            \
+  F(InterpreterGreaterThan, 2, 1)         \
+  F(InterpreterLessThanOrEqual, 2, 1)     \
+  F(InterpreterGreaterThanOrEqual, 2, 1)  \
+  F(InterpreterToBoolean, 1, 1)           \
+  F(InterpreterLogicalNot, 1, 1)          \
+  F(InterpreterTypeOf, 1, 1)              \
+  F(InterpreterNewClosure, 2, 1)          \
+  F(InterpreterForInPrepare, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_FUNCTION(F)     \
+  F(FunctionGetName, 1, 1)                 \
+  F(FunctionSetName, 2, 1)                 \
+  F(FunctionRemovePrototype, 1, 1)         \
+  F(FunctionGetScript, 1, 1)               \
+  F(FunctionGetSourceCode, 1, 1)           \
+  F(FunctionGetScriptSourcePosition, 1, 1) \
+  F(FunctionGetPositionForOffset, 2, 1)    \
+  F(FunctionSetInstanceClassName, 2, 1)    \
+  F(FunctionSetLength, 2, 1)               \
+  F(FunctionSetPrototype, 2, 1)            \
+  F(FunctionIsAPIFunction, 1, 1)           \
+  F(SetCode, 2, 1)                         \
+  F(SetNativeFlag, 1, 1)                   \
+  F(ThrowStrongModeTooFewArguments, 0, 1)  \
+  F(IsConstructor, 1, 1)                   \
+  F(SetForceInlineFlag, 1, 1)              \
+  F(Call, -1 /* >= 2 */, 1)                \
+  F(TailCall, -1 /* >= 2 */, 1)            \
+  F(Apply, 5, 1)                           \
+  F(ConvertReceiver, 1, 1)                 \
+  F(IsFunction, 1, 1)                      \
+  F(FunctionToString, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_GENERATOR(F) \
+  F(CreateJSGeneratorObject, 0, 1)      \
+  F(SuspendJSGeneratorObject, -1, 1)    \
+  F(ResumeJSGeneratorObject, 3, 1)      \
+  F(GeneratorClose, 1, 1)               \
+  F(GeneratorGetFunction, 1, 1)         \
+  F(GeneratorGetContext, 1, 1)          \
+  F(GeneratorGetReceiver, 1, 1)         \
+  F(GeneratorGetContinuation, 1, 1)     \
+  F(GeneratorGetSourcePosition, 1, 1)   \
+  F(GeneratorNext, 2, 1)                \
+  F(GeneratorThrow, 2, 1)
 
 
 #ifdef V8_I18N_SUPPORT
-#define RUNTIME_FUNCTION_LIST_I18N_SUPPORT(F) \
-  /* i18n support */                          \
-  /* Standalone, helper methods. */           \
-  F(CanonicalizeLanguageTag, 1, 1)            \
-  F(AvailableLocalesOf, 1, 1)                 \
-  F(GetDefaultICULocale, 0, 1)                \
-  F(GetLanguageTagVariants, 1, 1)             \
-  F(IsInitializedIntlObject, 1, 1)            \
-  F(IsInitializedIntlObjectOfType, 2, 1)      \
-  F(MarkAsInitializedIntlObjectOfType, 3, 1)  \
-  F(GetImplFromInitializedIntlObject, 1, 1)   \
-                                              \
-  /* Date format and parse. */                \
-  F(CreateDateTimeFormat, 3, 1)               \
-  F(InternalDateFormat, 2, 1)                 \
-  F(InternalDateParse, 2, 1)                  \
-                                              \
-  /* Number format and parse. */              \
-  F(CreateNumberFormat, 3, 1)                 \
-  F(InternalNumberFormat, 2, 1)               \
-  F(InternalNumberParse, 2, 1)                \
-                                              \
-  /* Collator. */                             \
-  F(CreateCollator, 3, 1)                     \
-  F(InternalCompare, 3, 1)                    \
-                                              \
-  /* String.prototype.normalize. */           \
-  F(StringNormalize, 2, 1)                    \
-                                              \
-  /* Break iterator. */                       \
-  F(CreateBreakIterator, 3, 1)                \
-  F(BreakIteratorAdoptText, 2, 1)             \
-  F(BreakIteratorFirst, 1, 1)                 \
-  F(BreakIteratorNext, 1, 1)                  \
-  F(BreakIteratorCurrent, 1, 1)               \
+#define FOR_EACH_INTRINSIC_I18N(F)           \
+  F(CanonicalizeLanguageTag, 1, 1)           \
+  F(AvailableLocalesOf, 1, 1)                \
+  F(GetDefaultICULocale, 0, 1)               \
+  F(GetLanguageTagVariants, 1, 1)            \
+  F(IsInitializedIntlObject, 1, 1)           \
+  F(IsInitializedIntlObjectOfType, 2, 1)     \
+  F(MarkAsInitializedIntlObjectOfType, 3, 1) \
+  F(GetImplFromInitializedIntlObject, 1, 1)  \
+  F(CreateDateTimeFormat, 3, 1)              \
+  F(InternalDateFormat, 2, 1)                \
+  F(InternalDateParse, 2, 1)                 \
+  F(CreateNumberFormat, 3, 1)                \
+  F(InternalNumberFormat, 2, 1)              \
+  F(InternalNumberParse, 2, 1)               \
+  F(CreateCollator, 3, 1)                    \
+  F(InternalCompare, 3, 1)                   \
+  F(StringNormalize, 2, 1)                   \
+  F(CreateBreakIterator, 3, 1)               \
+  F(BreakIteratorAdoptText, 2, 1)            \
+  F(BreakIteratorFirst, 1, 1)                \
+  F(BreakIteratorNext, 1, 1)                 \
+  F(BreakIteratorCurrent, 1, 1)              \
   F(BreakIteratorBreakType, 1, 1)
-
 #else
-#define RUNTIME_FUNCTION_LIST_I18N_SUPPORT(F)
+#define FOR_EACH_INTRINSIC_I18N(F)
 #endif
 
 
-// ----------------------------------------------------------------------------
-// RUNTIME_FUNCTION_LIST defines all runtime functions accessed
-// either directly by id (via the code generator), or indirectly
-// via a native call by name (from within JS code).
-// Entries have the form F(name, number of arguments, number of return values).
-
-#define RUNTIME_FUNCTION_LIST_RETURN_OBJECT(F) \
-  RUNTIME_FUNCTION_LIST_ALWAYS_1(F)            \
-  RUNTIME_FUNCTION_LIST_ALWAYS_2(F)            \
-  RUNTIME_FUNCTION_LIST_ALWAYS_3(F)            \
-  RUNTIME_FUNCTION_LIST_DEBUGGER(F)            \
-  RUNTIME_FUNCTION_LIST_I18N_SUPPORT(F)
+#define FOR_EACH_INTRINSIC_INTERNAL(F)        \
+  F(CheckIsBootstrapping, 0, 1)               \
+  F(ExportFromRuntime, 1, 1)                  \
+  F(ExportExperimentalFromRuntime, 1, 1)      \
+  F(InstallToContext, 1, 1)                   \
+  F(Throw, 1, 1)                              \
+  F(ReThrow, 1, 1)                            \
+  F(UnwindAndFindExceptionHandler, 0, 1)      \
+  F(PromoteScheduledException, 0, 1)          \
+  F(ThrowReferenceError, 1, 1)                \
+  F(ThrowApplyNonFunction, 1, 1)              \
+  F(NewTypeError, 2, 1)                       \
+  F(NewSyntaxError, 2, 1)                     \
+  F(NewReferenceError, 2, 1)                  \
+  F(ThrowIllegalInvocation, 0, 1)             \
+  F(ThrowIteratorResultNotAnObject, 1, 1)     \
+  F(ThrowStackOverflow, 0, 1)                 \
+  F(ThrowStrongModeImplicitConversion, 0, 1)  \
+  F(PromiseRejectEvent, 3, 1)                 \
+  F(PromiseRevokeReject, 1, 1)                \
+  F(StackGuard, 0, 1)                         \
+  F(Interrupt, 0, 1)                          \
+  F(AllocateInNewSpace, 1, 1)                 \
+  F(AllocateInTargetSpace, 2, 1)              \
+  F(CollectStackTrace, 2, 1)                  \
+  F(MessageGetStartPosition, 1, 1)            \
+  F(MessageGetScript, 1, 1)                   \
+  F(FormatMessageString, 4, 1)                \
+  F(CallSiteGetFileNameRT, 1, 1)              \
+  F(CallSiteGetFunctionNameRT, 1, 1)          \
+  F(CallSiteGetScriptNameOrSourceUrlRT, 1, 1) \
+  F(CallSiteGetMethodNameRT, 1, 1)            \
+  F(CallSiteGetLineNumberRT, 1, 1)            \
+  F(CallSiteGetColumnNumberRT, 1, 1)          \
+  F(CallSiteIsNativeRT, 1, 1)                 \
+  F(CallSiteIsToplevelRT, 1, 1)               \
+  F(CallSiteIsEvalRT, 1, 1)                   \
+  F(CallSiteIsConstructorRT, 1, 1)            \
+  F(IS_VAR, 1, 1)                             \
+  F(IncrementStatsCounter, 1, 1)              \
+  F(ThrowConstructedNonConstructable, 1, 1)   \
+  F(ThrowCalledNonCallable, 1, 1)             \
+  F(CreateListFromArrayLike, 1, 1)            \
+  F(IncrementUseCounter, 1, 1)
 
 
-#define RUNTIME_FUNCTION_LIST(F)         \
-  RUNTIME_FUNCTION_LIST_RETURN_OBJECT(F) \
-  RUNTIME_FUNCTION_LIST_RETURN_PAIR(F)
-
-// ----------------------------------------------------------------------------
-// INLINE_FUNCTION_LIST defines all inlined functions accessed
-// with a native call of the form %_name from within JS code.
-// Entries have the form F(name, number of arguments, number of return values).
-#define INLINE_FUNCTION_LIST(F)                             \
-  F(IsSmi, 1, 1)                                            \
-  F(IsNonNegativeSmi, 1, 1)                                 \
-  F(IsArray, 1, 1)                                          \
-  F(IsRegExp, 1, 1)                                         \
-  F(IsJSProxy, 1, 1)                                        \
-  F(IsConstructCall, 0, 1)                                  \
-  F(CallFunction, -1 /* receiver + n args + function */, 1) \
-  F(ArgumentsLength, 0, 1)                                  \
-  F(Arguments, 1, 1)                                        \
-  F(ValueOf, 1, 1)                                          \
-  F(SetValueOf, 2, 1)                                       \
-  F(DateField, 2 /* date object, field index */, 1)         \
-  F(StringCharFromCode, 1, 1)                               \
-  F(StringCharAt, 2, 1)                                     \
-  F(OneByteSeqStringSetChar, 3, 1)                          \
-  F(TwoByteSeqStringSetChar, 3, 1)                          \
-  F(ObjectEquals, 2, 1)                                     \
-  F(IsObject, 1, 1)                                         \
-  F(IsFunction, 1, 1)                                       \
-  F(IsUndetectableObject, 1, 1)                             \
-  F(IsSpecObject, 1, 1)                                     \
-  F(IsStringWrapperSafeForDefaultValueOf, 1, 1)             \
-  F(MathPow, 2, 1)                                          \
-  F(IsMinusZero, 1, 1)                                      \
-  F(HasCachedArrayIndex, 1, 1)                              \
-  F(GetCachedArrayIndex, 1, 1)                              \
-  F(FastOneByteArrayJoin, 2, 1)                             \
-  F(GeneratorNext, 2, 1)                                    \
-  F(GeneratorThrow, 2, 1)                                   \
-  F(DebugBreakInOptimizedCode, 0, 1)                        \
-  F(ClassOf, 1, 1)                                          \
-  F(StringCharCodeAt, 2, 1)                                 \
-  F(StringAdd, 2, 1)                                        \
-  F(SubString, 3, 1)                                        \
-  F(StringCompare, 2, 1)                                    \
-  F(RegExpExec, 4, 1)                                       \
-  F(RegExpConstructResult, 3, 1)                            \
-  F(GetFromCache, 2, 1)                                     \
-  F(NumberToString, 1, 1)                                   \
-  F(DebugIsActive, 0, 1)
+#define FOR_EACH_INTRINSIC_JSON(F) \
+  F(QuoteJSONString, 1, 1)         \
+  F(BasicJSONStringify, 1, 1)      \
+  F(ParseJson, 1, 1)
 
 
-// ----------------------------------------------------------------------------
-// INLINE_OPTIMIZED_FUNCTION_LIST defines all inlined functions accessed
-// with a native call of the form %_name from within JS code that also have
-// a corresponding runtime function, that is called from non-optimized code.
-// For the benefit of (fuzz) tests, the runtime version can also be called
-// directly as %name (i.e. without the leading underscore).
-// Entries have the form F(name, number of arguments, number of return values).
-#define INLINE_OPTIMIZED_FUNCTION_LIST(F) \
-  /* Typed Arrays */                      \
-  F(TypedArrayInitialize, 5, 1)           \
-  F(DataViewInitialize, 4, 1)             \
-  F(MaxSmi, 0, 1)                         \
-  F(TypedArrayMaxSizeInHeap, 0, 1)        \
-  F(ArrayBufferViewGetByteLength, 1, 1)   \
-  F(ArrayBufferViewGetByteOffset, 1, 1)   \
-  F(TypedArrayGetLength, 1, 1)            \
-  /* ArrayBuffer */                       \
-  F(ArrayBufferGetByteLength, 1, 1)       \
-  /* Maths */                             \
-  F(ConstructDouble, 2, 1)                \
-  F(DoubleHi, 1, 1)                       \
-  F(DoubleLo, 1, 1)                       \
-  F(MathSqrtRT, 1, 1)                     \
-  F(MathLogRT, 1, 1)                      \
-  /* ES6 Collections */                   \
-  F(MapClear, 1, 1)                       \
-  F(MapDelete, 2, 1)                      \
-  F(MapGet, 2, 1)                         \
-  F(MapGetSize, 1, 1)                     \
-  F(MapHas, 2, 1)                         \
-  F(MapInitialize, 1, 1)                  \
-  F(MapSet, 3, 1)                         \
-  F(SetAdd, 2, 1)                         \
-  F(SetClear, 1, 1)                       \
-  F(SetDelete, 2, 1)                      \
-  F(SetGetSize, 1, 1)                     \
-  F(SetHas, 2, 1)                         \
-  F(SetInitialize, 1, 1)                  \
-  /* Arrays */                            \
-  F(HasFastPackedElements, 1, 1)          \
-  F(GetPrototype, 1, 1)
+#define FOR_EACH_INTRINSIC_LITERALS(F)   \
+  F(CreateRegExpLiteral, 4, 1)           \
+  F(CreateObjectLiteral, 4, 1)           \
+  F(CreateArrayLiteral, 4, 1)            \
+  F(CreateArrayLiteralStubBailout, 3, 1) \
+  F(StoreArrayLiteralElement, 5, 1)
 
 
+#define FOR_EACH_INTRINSIC_LIVEEDIT(F)              \
+  F(LiveEditFindSharedFunctionInfosForScript, 1, 1) \
+  F(LiveEditGatherCompileInfo, 2, 1)                \
+  F(LiveEditReplaceScript, 3, 1)                    \
+  F(LiveEditFunctionSourceUpdated, 1, 1)            \
+  F(LiveEditReplaceFunctionCode, 2, 1)              \
+  F(LiveEditFunctionSetScript, 2, 1)                \
+  F(LiveEditReplaceRefToNestedFunction, 3, 1)       \
+  F(LiveEditPatchFunctionPositions, 2, 1)           \
+  F(LiveEditCheckAndDropActivations, 3, 1)          \
+  F(LiveEditCompareStrings, 2, 1)                   \
+  F(LiveEditRestartFrame, 2, 1)
+
+
+#define FOR_EACH_INTRINSIC_MATHS(F) \
+  F(MathAcos, 1, 1)                 \
+  F(MathAsin, 1, 1)                 \
+  F(MathAtan, 1, 1)                 \
+  F(MathLogRT, 1, 1)                \
+  F(DoubleHi, 1, 1)                 \
+  F(DoubleLo, 1, 1)                 \
+  F(ConstructDouble, 2, 1)          \
+  F(RemPiO2, 2, 1)                  \
+  F(MathAtan2, 2, 1)                \
+  F(MathExpRT, 1, 1)                \
+  F(MathClz32, 1, 1)                \
+  F(MathFloor, 1, 1)                \
+  F(MathPow, 2, 1)                  \
+  F(MathPowRT, 2, 1)                \
+  F(RoundNumber, 1, 1)              \
+  F(MathSqrt, 1, 1)                 \
+  F(MathFround, 1, 1)               \
+  F(IsMinusZero, 1, 1)              \
+  F(GenerateRandomNumbers, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_NUMBERS(F)  \
+  F(NumberToRadixString, 2, 1)         \
+  F(NumberToFixed, 2, 1)               \
+  F(NumberToExponential, 2, 1)         \
+  F(NumberToPrecision, 2, 1)           \
+  F(IsValidSmi, 1, 1)                  \
+  F(StringToNumber, 1, 1)              \
+  F(StringParseInt, 2, 1)              \
+  F(StringParseFloat, 1, 1)            \
+  F(NumberToString, 1, 1)              \
+  F(NumberToStringSkipCache, 1, 1)     \
+  F(NumberToIntegerMapMinusZero, 1, 1) \
+  F(NumberToSmi, 1, 1)                 \
+  F(NumberImul, 2, 1)                  \
+  F(SmiLexicographicCompare, 2, 1)     \
+  F(MaxSmi, 0, 1)                      \
+  F(IsSmi, 1, 1)                       \
+  F(GetRootNaN, 0, 1)                  \
+  F(GetHoleNaNUpper, 0, 1)             \
+  F(GetHoleNaNLower, 0, 1)
+
+
+#define FOR_EACH_INTRINSIC_OBJECT(F)                 \
+  F(GetPrototype, 1, 1)                              \
+  F(InternalSetPrototype, 2, 1)                      \
+  F(SetPrototype, 2, 1)                              \
+  F(GetOwnProperty, 2, 1)                            \
+  F(GetOwnProperty_Legacy, 2, 1)                     \
+  F(OptimizeObjectForAddingMultipleProperties, 2, 1) \
+  F(GetProperty, 2, 1)                               \
+  F(GetPropertyStrong, 2, 1)                         \
+  F(KeyedGetProperty, 2, 1)                          \
+  F(KeyedGetPropertyStrong, 2, 1)                    \
+  F(LoadGlobalViaContext, 1, 1)                      \
+  F(StoreGlobalViaContext_Sloppy, 2, 1)              \
+  F(StoreGlobalViaContext_Strict, 2, 1)              \
+  F(AddNamedProperty, 4, 1)                          \
+  F(SetProperty, 4, 1)                               \
+  F(AddElement, 3, 1)                                \
+  F(AppendElement, 2, 1)                             \
+  F(DeleteProperty_Sloppy, 2, 1)                     \
+  F(DeleteProperty_Strict, 2, 1)                     \
+  F(HasOwnProperty, 2, 1)                            \
+  F(HasProperty, 2, 1)                               \
+  F(PropertyIsEnumerable, 2, 1)                      \
+  F(GetPropertyNamesFast, 1, 1)                      \
+  F(GetOwnPropertyKeys, 2, 1)                        \
+  F(GetInterceptorInfo, 1, 1)                        \
+  F(ToFastProperties, 1, 1)                          \
+  F(AllocateHeapNumber, 0, 1)                        \
+  F(NewObject, 2, 1)                                 \
+  F(FinalizeInstanceSize, 1, 1)                      \
+  F(GlobalProxy, 1, 1)                               \
+  F(LookupAccessor, 3, 1)                            \
+  F(LoadMutableDouble, 2, 1)                         \
+  F(TryMigrateInstance, 1, 1)                        \
+  F(IsJSGlobalProxy, 1, 1)                           \
+  F(DefineAccessorPropertyUnchecked, 5, 1)           \
+  F(DefineDataPropertyUnchecked, 4, 1)               \
+  F(GetDataProperty, 2, 1)                           \
+  F(HasFastPackedElements, 1, 1)                     \
+  F(ValueOf, 1, 1)                                   \
+  F(SetValueOf, 2, 1)                                \
+  F(JSValueGetValue, 1, 1)                           \
+  F(ObjectEquals, 2, 1)                              \
+  F(IsJSReceiver, 1, 1)                              \
+  F(IsStrong, 1, 1)                                  \
+  F(ClassOf, 1, 1)                                   \
+  F(DefineGetterPropertyUnchecked, 4, 1)             \
+  F(DefineSetterPropertyUnchecked, 4, 1)             \
+  F(ToObject, 1, 1)                                  \
+  F(ToPrimitive, 1, 1)                               \
+  F(ToPrimitive_Number, 1, 1)                        \
+  F(ToPrimitive_String, 1, 1)                        \
+  F(ToNumber, 1, 1)                                  \
+  F(ToInteger, 1, 1)                                 \
+  F(ToLength, 1, 1)                                  \
+  F(ToString, 1, 1)                                  \
+  F(ToName, 1, 1)                                    \
+  F(Equals, 2, 1)                                    \
+  F(StrictEquals, 2, 1)                              \
+  F(Compare, 3, 1)                                   \
+  F(Compare_Strong, 3, 1)                            \
+  F(InstanceOf, 2, 1)                                \
+  F(HasInPrototypeChain, 2, 1)                       \
+  F(CreateIterResultObject, 2, 1)                    \
+  F(IsAccessCheckNeeded, 1, 1)                       \
+  F(ObjectDefineProperties, 2, 1)                    \
+  F(ObjectDefineProperty, 3, 1)
+
+
+#define FOR_EACH_INTRINSIC_OBSERVE(F)            \
+  F(IsObserved, 1, 1)                            \
+  F(SetIsObserved, 1, 1)                         \
+  F(EnqueueMicrotask, 1, 1)                      \
+  F(RunMicrotasks, 0, 1)                         \
+  F(DeliverObservationChangeRecords, 2, 1)       \
+  F(GetObservationState, 0, 1)                   \
+  F(ObserverObjectAndRecordHaveSameOrigin, 3, 1) \
+  F(ObjectWasCreatedInCurrentOrigin, 1, 1)       \
+  F(GetObjectContextObjectObserve, 1, 1)         \
+  F(GetObjectContextObjectGetNotifier, 1, 1)     \
+  F(GetObjectContextNotifierPerformChange, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_OPERATORS(F) \
+  F(Multiply, 2, 1)                     \
+  F(Multiply_Strong, 2, 1)              \
+  F(Divide, 2, 1)                       \
+  F(Divide_Strong, 2, 1)                \
+  F(Modulus, 2, 1)                      \
+  F(Modulus_Strong, 2, 1)               \
+  F(Add, 2, 1)                          \
+  F(Add_Strong, 2, 1)                   \
+  F(Subtract, 2, 1)                     \
+  F(Subtract_Strong, 2, 1)              \
+  F(ShiftLeft, 2, 1)                    \
+  F(ShiftLeft_Strong, 2, 1)             \
+  F(ShiftRight, 2, 1)                   \
+  F(ShiftRight_Strong, 2, 1)            \
+  F(ShiftRightLogical, 2, 1)            \
+  F(ShiftRightLogical_Strong, 2, 1)     \
+  F(BitwiseAnd, 2, 1)                   \
+  F(BitwiseAnd_Strong, 2, 1)            \
+  F(BitwiseOr, 2, 1)                    \
+  F(BitwiseOr_Strong, 2, 1)             \
+  F(BitwiseXor, 2, 1)                   \
+  F(BitwiseXor_Strong, 2, 1)
+
+#define FOR_EACH_INTRINSIC_PROXY(F)     \
+  F(IsJSProxy, 1, 1)                    \
+  F(JSProxyCall, -1 /* >= 2 */, 1)      \
+  F(JSProxyConstruct, -1 /* >= 3 */, 1) \
+  F(JSProxyGetTarget, 1, 1)             \
+  F(JSProxyGetHandler, 1, 1)            \
+  F(JSProxyRevoke, 1, 1)
+
+#define FOR_EACH_INTRINSIC_REGEXP(F)           \
+  F(StringReplaceGlobalRegExpWithString, 4, 1) \
+  F(StringSplit, 3, 1)                         \
+  F(RegExpExec, 4, 1)                          \
+  F(RegExpFlags, 1, 1)                         \
+  F(RegExpSource, 1, 1)                        \
+  F(RegExpConstructResult, 3, 1)               \
+  F(RegExpInitializeAndCompile, 3, 1)          \
+  F(RegExpExecMultiple, 4, 1)                  \
+  F(RegExpExecReThrow, 4, 1)                   \
+  F(IsRegExp, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_SCOPES(F)       \
+  F(ThrowConstAssignError, 0, 1)           \
+  F(DeclareGlobals, 2, 1)                  \
+  F(InitializeVarGlobal, 3, 1)             \
+  F(InitializeConstGlobal, 2, 1)           \
+  F(DeclareLookupSlot, 3, 1)               \
+  F(InitializeLegacyConstLookupSlot, 3, 1) \
+  F(NewSloppyArguments_Generic, 1, 1)      \
+  F(NewStrictArguments_Generic, 1, 1)      \
+  F(NewRestArguments_Generic, 2, 1)        \
+  F(NewSloppyArguments, 3, 1)              \
+  F(NewStrictArguments, 3, 1)              \
+  F(NewRestParam, 3, 1)                    \
+  F(NewClosure, 1, 1)                      \
+  F(NewClosure_Tenured, 1, 1)              \
+  F(NewScriptContext, 2, 1)                \
+  F(NewFunctionContext, 1, 1)              \
+  F(PushWithContext, 2, 1)                 \
+  F(PushCatchContext, 3, 1)                \
+  F(PushBlockContext, 2, 1)                \
+  F(IsJSModule, 1, 1)                      \
+  F(PushModuleContext, 2, 1)               \
+  F(DeclareModules, 1, 1)                  \
+  F(DeleteLookupSlot, 2, 1)                \
+  F(StoreLookupSlot, 4, 1)                 \
+  F(ArgumentsLength, 0, 1)                 \
+  F(Arguments, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_SIMD(F)           \
+  F(IsSimdValue, 1, 1)                       \
+  F(SimdSameValue, 2, 1)                     \
+  F(SimdSameValueZero, 2, 1)                 \
+  F(CreateFloat32x4, 4, 1)                   \
+  F(CreateInt32x4, 4, 1)                     \
+  F(CreateUint32x4, 4, 1)                    \
+  F(CreateBool32x4, 4, 1)                    \
+  F(CreateInt16x8, 8, 1)                     \
+  F(CreateUint16x8, 8, 1)                    \
+  F(CreateBool16x8, 8, 1)                    \
+  F(CreateInt8x16, 16, 1)                    \
+  F(CreateUint8x16, 16, 1)                   \
+  F(CreateBool8x16, 16, 1)                   \
+  F(Float32x4Check, 1, 1)                    \
+  F(Float32x4ExtractLane, 2, 1)              \
+  F(Float32x4ReplaceLane, 3, 1)              \
+  F(Float32x4Abs, 1, 1)                      \
+  F(Float32x4Neg, 1, 1)                      \
+  F(Float32x4Sqrt, 1, 1)                     \
+  F(Float32x4RecipApprox, 1, 1)              \
+  F(Float32x4RecipSqrtApprox, 1, 1)          \
+  F(Float32x4Add, 2, 1)                      \
+  F(Float32x4Sub, 2, 1)                      \
+  F(Float32x4Mul, 2, 1)                      \
+  F(Float32x4Div, 2, 1)                      \
+  F(Float32x4Min, 2, 1)                      \
+  F(Float32x4Max, 2, 1)                      \
+  F(Float32x4MinNum, 2, 1)                   \
+  F(Float32x4MaxNum, 2, 1)                   \
+  F(Float32x4Equal, 2, 1)                    \
+  F(Float32x4NotEqual, 2, 1)                 \
+  F(Float32x4LessThan, 2, 1)                 \
+  F(Float32x4LessThanOrEqual, 2, 1)          \
+  F(Float32x4GreaterThan, 2, 1)              \
+  F(Float32x4GreaterThanOrEqual, 2, 1)       \
+  F(Float32x4Select, 3, 1)                   \
+  F(Float32x4Swizzle, 5, 1)                  \
+  F(Float32x4Shuffle, 6, 1)                  \
+  F(Float32x4FromInt32x4, 1, 1)              \
+  F(Float32x4FromUint32x4, 1, 1)             \
+  F(Float32x4FromInt32x4Bits, 1, 1)          \
+  F(Float32x4FromUint32x4Bits, 1, 1)         \
+  F(Float32x4FromInt16x8Bits, 1, 1)          \
+  F(Float32x4FromUint16x8Bits, 1, 1)         \
+  F(Float32x4FromInt8x16Bits, 1, 1)          \
+  F(Float32x4FromUint8x16Bits, 1, 1)         \
+  F(Float32x4Load, 2, 1)                     \
+  F(Float32x4Load1, 2, 1)                    \
+  F(Float32x4Load2, 2, 1)                    \
+  F(Float32x4Load3, 2, 1)                    \
+  F(Float32x4Store, 3, 1)                    \
+  F(Float32x4Store1, 3, 1)                   \
+  F(Float32x4Store2, 3, 1)                   \
+  F(Float32x4Store3, 3, 1)                   \
+  F(Int32x4Check, 1, 1)                      \
+  F(Int32x4ExtractLane, 2, 1)                \
+  F(Int32x4ReplaceLane, 3, 1)                \
+  F(Int32x4Neg, 1, 1)                        \
+  F(Int32x4Add, 2, 1)                        \
+  F(Int32x4Sub, 2, 1)                        \
+  F(Int32x4Mul, 2, 1)                        \
+  F(Int32x4Min, 2, 1)                        \
+  F(Int32x4Max, 2, 1)                        \
+  F(Int32x4And, 2, 1)                        \
+  F(Int32x4Or, 2, 1)                         \
+  F(Int32x4Xor, 2, 1)                        \
+  F(Int32x4Not, 1, 1)                        \
+  F(Int32x4ShiftLeftByScalar, 2, 1)          \
+  F(Int32x4ShiftRightByScalar, 2, 1)         \
+  F(Int32x4Equal, 2, 1)                      \
+  F(Int32x4NotEqual, 2, 1)                   \
+  F(Int32x4LessThan, 2, 1)                   \
+  F(Int32x4LessThanOrEqual, 2, 1)            \
+  F(Int32x4GreaterThan, 2, 1)                \
+  F(Int32x4GreaterThanOrEqual, 2, 1)         \
+  F(Int32x4Select, 3, 1)                     \
+  F(Int32x4Swizzle, 5, 1)                    \
+  F(Int32x4Shuffle, 6, 1)                    \
+  F(Int32x4FromFloat32x4, 1, 1)              \
+  F(Int32x4FromUint32x4, 1, 1)               \
+  F(Int32x4FromFloat32x4Bits, 1, 1)          \
+  F(Int32x4FromUint32x4Bits, 1, 1)           \
+  F(Int32x4FromInt16x8Bits, 1, 1)            \
+  F(Int32x4FromUint16x8Bits, 1, 1)           \
+  F(Int32x4FromInt8x16Bits, 1, 1)            \
+  F(Int32x4FromUint8x16Bits, 1, 1)           \
+  F(Int32x4Load, 2, 1)                       \
+  F(Int32x4Load1, 2, 1)                      \
+  F(Int32x4Load2, 2, 1)                      \
+  F(Int32x4Load3, 2, 1)                      \
+  F(Int32x4Store, 3, 1)                      \
+  F(Int32x4Store1, 3, 1)                     \
+  F(Int32x4Store2, 3, 1)                     \
+  F(Int32x4Store3, 3, 1)                     \
+  F(Uint32x4Check, 1, 1)                     \
+  F(Uint32x4ExtractLane, 2, 1)               \
+  F(Uint32x4ReplaceLane, 3, 1)               \
+  F(Uint32x4Add, 2, 1)                       \
+  F(Uint32x4Sub, 2, 1)                       \
+  F(Uint32x4Mul, 2, 1)                       \
+  F(Uint32x4Min, 2, 1)                       \
+  F(Uint32x4Max, 2, 1)                       \
+  F(Uint32x4And, 2, 1)                       \
+  F(Uint32x4Or, 2, 1)                        \
+  F(Uint32x4Xor, 2, 1)                       \
+  F(Uint32x4Not, 1, 1)                       \
+  F(Uint32x4ShiftLeftByScalar, 2, 1)         \
+  F(Uint32x4ShiftRightByScalar, 2, 1)        \
+  F(Uint32x4Equal, 2, 1)                     \
+  F(Uint32x4NotEqual, 2, 1)                  \
+  F(Uint32x4LessThan, 2, 1)                  \
+  F(Uint32x4LessThanOrEqual, 2, 1)           \
+  F(Uint32x4GreaterThan, 2, 1)               \
+  F(Uint32x4GreaterThanOrEqual, 2, 1)        \
+  F(Uint32x4Select, 3, 1)                    \
+  F(Uint32x4Swizzle, 5, 1)                   \
+  F(Uint32x4Shuffle, 6, 1)                   \
+  F(Uint32x4FromFloat32x4, 1, 1)             \
+  F(Uint32x4FromInt32x4, 1, 1)               \
+  F(Uint32x4FromFloat32x4Bits, 1, 1)         \
+  F(Uint32x4FromInt32x4Bits, 1, 1)           \
+  F(Uint32x4FromInt16x8Bits, 1, 1)           \
+  F(Uint32x4FromUint16x8Bits, 1, 1)          \
+  F(Uint32x4FromInt8x16Bits, 1, 1)           \
+  F(Uint32x4FromUint8x16Bits, 1, 1)          \
+  F(Uint32x4Load, 2, 1)                      \
+  F(Uint32x4Load1, 2, 1)                     \
+  F(Uint32x4Load2, 2, 1)                     \
+  F(Uint32x4Load3, 2, 1)                     \
+  F(Uint32x4Store, 3, 1)                     \
+  F(Uint32x4Store1, 3, 1)                    \
+  F(Uint32x4Store2, 3, 1)                    \
+  F(Uint32x4Store3, 3, 1)                    \
+  F(Bool32x4Check, 1, 1)                     \
+  F(Bool32x4ExtractLane, 2, 1)               \
+  F(Bool32x4ReplaceLane, 3, 1)               \
+  F(Bool32x4And, 2, 1)                       \
+  F(Bool32x4Or, 2, 1)                        \
+  F(Bool32x4Xor, 2, 1)                       \
+  F(Bool32x4Not, 1, 1)                       \
+  F(Bool32x4AnyTrue, 1, 1)                   \
+  F(Bool32x4AllTrue, 1, 1)                   \
+  F(Bool32x4Swizzle, 5, 1)                   \
+  F(Bool32x4Shuffle, 6, 1)                   \
+  F(Int16x8Check, 1, 1)                      \
+  F(Int16x8ExtractLane, 2, 1)                \
+  F(Int16x8ReplaceLane, 3, 1)                \
+  F(Int16x8Neg, 1, 1)                        \
+  F(Int16x8Add, 2, 1)                        \
+  F(Int16x8AddSaturate, 2, 1)                \
+  F(Int16x8Sub, 2, 1)                        \
+  F(Int16x8SubSaturate, 2, 1)                \
+  F(Int16x8Mul, 2, 1)                        \
+  F(Int16x8Min, 2, 1)                        \
+  F(Int16x8Max, 2, 1)                        \
+  F(Int16x8And, 2, 1)                        \
+  F(Int16x8Or, 2, 1)                         \
+  F(Int16x8Xor, 2, 1)                        \
+  F(Int16x8Not, 1, 1)                        \
+  F(Int16x8ShiftLeftByScalar, 2, 1)          \
+  F(Int16x8ShiftRightByScalar, 2, 1)         \
+  F(Int16x8Equal, 2, 1)                      \
+  F(Int16x8NotEqual, 2, 1)                   \
+  F(Int16x8LessThan, 2, 1)                   \
+  F(Int16x8LessThanOrEqual, 2, 1)            \
+  F(Int16x8GreaterThan, 2, 1)                \
+  F(Int16x8GreaterThanOrEqual, 2, 1)         \
+  F(Int16x8Select, 3, 1)                     \
+  F(Int16x8Swizzle, 9, 1)                    \
+  F(Int16x8Shuffle, 10, 1)                   \
+  F(Int16x8FromUint16x8, 1, 1)               \
+  F(Int16x8FromFloat32x4Bits, 1, 1)          \
+  F(Int16x8FromInt32x4Bits, 1, 1)            \
+  F(Int16x8FromUint32x4Bits, 1, 1)           \
+  F(Int16x8FromUint16x8Bits, 1, 1)           \
+  F(Int16x8FromInt8x16Bits, 1, 1)            \
+  F(Int16x8FromUint8x16Bits, 1, 1)           \
+  F(Int16x8Load, 2, 1)                       \
+  F(Int16x8Store, 3, 1)                      \
+  F(Uint16x8Check, 1, 1)                     \
+  F(Uint16x8ExtractLane, 2, 1)               \
+  F(Uint16x8ReplaceLane, 3, 1)               \
+  F(Uint16x8Add, 2, 1)                       \
+  F(Uint16x8AddSaturate, 2, 1)               \
+  F(Uint16x8Sub, 2, 1)                       \
+  F(Uint16x8SubSaturate, 2, 1)               \
+  F(Uint16x8Mul, 2, 1)                       \
+  F(Uint16x8Min, 2, 1)                       \
+  F(Uint16x8Max, 2, 1)                       \
+  F(Uint16x8And, 2, 1)                       \
+  F(Uint16x8Or, 2, 1)                        \
+  F(Uint16x8Xor, 2, 1)                       \
+  F(Uint16x8Not, 1, 1)                       \
+  F(Uint16x8ShiftLeftByScalar, 2, 1)         \
+  F(Uint16x8ShiftRightByScalar, 2, 1)        \
+  F(Uint16x8Equal, 2, 1)                     \
+  F(Uint16x8NotEqual, 2, 1)                  \
+  F(Uint16x8LessThan, 2, 1)                  \
+  F(Uint16x8LessThanOrEqual, 2, 1)           \
+  F(Uint16x8GreaterThan, 2, 1)               \
+  F(Uint16x8GreaterThanOrEqual, 2, 1)        \
+  F(Uint16x8Select, 3, 1)                    \
+  F(Uint16x8Swizzle, 9, 1)                   \
+  F(Uint16x8Shuffle, 10, 1)                  \
+  F(Uint16x8FromInt16x8, 1, 1)               \
+  F(Uint16x8FromFloat32x4Bits, 1, 1)         \
+  F(Uint16x8FromInt32x4Bits, 1, 1)           \
+  F(Uint16x8FromUint32x4Bits, 1, 1)          \
+  F(Uint16x8FromInt16x8Bits, 1, 1)           \
+  F(Uint16x8FromInt8x16Bits, 1, 1)           \
+  F(Uint16x8FromUint8x16Bits, 1, 1)          \
+  F(Uint16x8Load, 2, 1)                      \
+  F(Uint16x8Store, 3, 1)                     \
+  F(Bool16x8Check, 1, 1)                     \
+  F(Bool16x8ExtractLane, 2, 1)               \
+  F(Bool16x8ReplaceLane, 3, 1)               \
+  F(Bool16x8And, 2, 1)                       \
+  F(Bool16x8Or, 2, 1)                        \
+  F(Bool16x8Xor, 2, 1)                       \
+  F(Bool16x8Not, 1, 1)                       \
+  F(Bool16x8AnyTrue, 1, 1)                   \
+  F(Bool16x8AllTrue, 1, 1)                   \
+  F(Bool16x8Swizzle, 9, 1)                   \
+  F(Bool16x8Shuffle, 10, 1)                  \
+  F(Int8x16Check, 1, 1)                      \
+  F(Int8x16ExtractLane, 2, 1)                \
+  F(Int8x16ReplaceLane, 3, 1)                \
+  F(Int8x16Neg, 1, 1)                        \
+  F(Int8x16Add, 2, 1)                        \
+  F(Int8x16AddSaturate, 2, 1)                \
+  F(Int8x16Sub, 2, 1)                        \
+  F(Int8x16SubSaturate, 2, 1)                \
+  F(Int8x16Mul, 2, 1)                        \
+  F(Int8x16Min, 2, 1)                        \
+  F(Int8x16Max, 2, 1)                        \
+  F(Int8x16And, 2, 1)                        \
+  F(Int8x16Or, 2, 1)                         \
+  F(Int8x16Xor, 2, 1)                        \
+  F(Int8x16Not, 1, 1)                        \
+  F(Int8x16ShiftLeftByScalar, 2, 1)          \
+  F(Int8x16ShiftRightByScalar, 2, 1)         \
+  F(Int8x16Equal, 2, 1)                      \
+  F(Int8x16NotEqual, 2, 1)                   \
+  F(Int8x16LessThan, 2, 1)                   \
+  F(Int8x16LessThanOrEqual, 2, 1)            \
+  F(Int8x16GreaterThan, 2, 1)                \
+  F(Int8x16GreaterThanOrEqual, 2, 1)         \
+  F(Int8x16Select, 3, 1)                     \
+  F(Int8x16Swizzle, 17, 1)                   \
+  F(Int8x16Shuffle, 18, 1)                   \
+  F(Int8x16FromUint8x16, 1, 1)               \
+  F(Int8x16FromFloat32x4Bits, 1, 1)          \
+  F(Int8x16FromInt32x4Bits, 1, 1)            \
+  F(Int8x16FromUint32x4Bits, 1, 1)           \
+  F(Int8x16FromInt16x8Bits, 1, 1)            \
+  F(Int8x16FromUint16x8Bits, 1, 1)           \
+  F(Int8x16FromUint8x16Bits, 1, 1)           \
+  F(Int8x16Load, 2, 1)                       \
+  F(Int8x16Store, 3, 1)                      \
+  F(Uint8x16Check, 1, 1)                     \
+  F(Uint8x16ExtractLane, 2, 1)               \
+  F(Uint8x16ReplaceLane, 3, 1)               \
+  F(Uint8x16Add, 2, 1)                       \
+  F(Uint8x16AddSaturate, 2, 1)               \
+  F(Uint8x16Sub, 2, 1)                       \
+  F(Uint8x16SubSaturate, 2, 1)               \
+  F(Uint8x16Mul, 2, 1)                       \
+  F(Uint8x16Min, 2, 1)                       \
+  F(Uint8x16Max, 2, 1)                       \
+  F(Uint8x16And, 2, 1)                       \
+  F(Uint8x16Or, 2, 1)                        \
+  F(Uint8x16Xor, 2, 1)                       \
+  F(Uint8x16Not, 1, 1)                       \
+  F(Uint8x16ShiftLeftByScalar, 2, 1)         \
+  F(Uint8x16ShiftRightByScalar, 2, 1)        \
+  F(Uint8x16Equal, 2, 1)                     \
+  F(Uint8x16NotEqual, 2, 1)                  \
+  F(Uint8x16LessThan, 2, 1)                  \
+  F(Uint8x16LessThanOrEqual, 2, 1)           \
+  F(Uint8x16GreaterThan, 2, 1)               \
+  F(Uint8x16GreaterThanOrEqual, 2, 1)        \
+  F(Uint8x16Select, 3, 1)                    \
+  F(Uint8x16Swizzle, 17, 1)                  \
+  F(Uint8x16Shuffle, 18, 1)                  \
+  F(Uint8x16FromInt8x16, 1, 1)               \
+  F(Uint8x16FromFloat32x4Bits, 1, 1)         \
+  F(Uint8x16FromInt32x4Bits, 1, 1)           \
+  F(Uint8x16FromUint32x4Bits, 1, 1)          \
+  F(Uint8x16FromInt16x8Bits, 1, 1)           \
+  F(Uint8x16FromUint16x8Bits, 1, 1)          \
+  F(Uint8x16FromInt8x16Bits, 1, 1)           \
+  F(Uint8x16Load, 2, 1)                      \
+  F(Uint8x16Store, 3, 1)                     \
+  F(Bool8x16Check, 1, 1)                     \
+  F(Bool8x16ExtractLane, 2, 1)               \
+  F(Bool8x16ReplaceLane, 3, 1)               \
+  F(Bool8x16And, 2, 1)                       \
+  F(Bool8x16Or, 2, 1)                        \
+  F(Bool8x16Xor, 2, 1)                       \
+  F(Bool8x16Not, 1, 1)                       \
+  F(Bool8x16AnyTrue, 1, 1)                   \
+  F(Bool8x16AllTrue, 1, 1)                   \
+  F(Bool8x16Swizzle, 17, 1)                  \
+  F(Bool8x16Shuffle, 18, 1)
+
+
+#define FOR_EACH_INTRINSIC_STRINGS(F)     \
+  F(StringReplaceOneCharWithString, 3, 1) \
+  F(StringIndexOf, 3, 1)                  \
+  F(StringLastIndexOf, 3, 1)              \
+  F(StringLocaleCompare, 2, 1)            \
+  F(SubString, 3, 1)                      \
+  F(StringAdd, 2, 1)                      \
+  F(InternalizeString, 1, 1)              \
+  F(StringMatch, 3, 1)                    \
+  F(StringCharCodeAtRT, 2, 1)             \
+  F(StringCompare, 2, 1)                  \
+  F(StringBuilderConcat, 3, 1)            \
+  F(StringBuilderJoin, 3, 1)              \
+  F(SparseJoinWithSeparator, 3, 1)        \
+  F(StringToArray, 2, 1)                  \
+  F(StringToLowerCase, 1, 1)              \
+  F(StringToUpperCase, 1, 1)              \
+  F(StringTrim, 3, 1)                     \
+  F(TruncateString, 2, 1)                 \
+  F(NewString, 2, 1)                      \
+  F(StringEquals, 2, 1)                   \
+  F(FlattenString, 1, 1)                  \
+  F(StringCharFromCode, 1, 1)             \
+  F(StringCharAt, 2, 1)                   \
+  F(OneByteSeqStringGetChar, 2, 1)        \
+  F(OneByteSeqStringSetChar, 3, 1)        \
+  F(TwoByteSeqStringGetChar, 2, 1)        \
+  F(TwoByteSeqStringSetChar, 3, 1)        \
+  F(StringCharCodeAt, 2, 1)
+
+
+#define FOR_EACH_INTRINSIC_SYMBOL(F) \
+  F(CreateSymbol, 1, 1)              \
+  F(CreatePrivateSymbol, 1, 1)       \
+  F(SymbolDescription, 1, 1)         \
+  F(SymbolDescriptiveString, 1, 1)   \
+  F(SymbolRegistry, 0, 1)            \
+  F(SymbolIsPrivate, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_TEST(F)            \
+  F(DeoptimizeFunction, 1, 1)                 \
+  F(DeoptimizeNow, 0, 1)                      \
+  F(RunningInSimulator, 0, 1)                 \
+  F(IsConcurrentRecompilationSupported, 0, 1) \
+  F(OptimizeFunctionOnNextCall, -1, 1)        \
+  F(OptimizeOsr, -1, 1)                       \
+  F(NeverOptimizeFunction, 1, 1)              \
+  F(GetOptimizationStatus, -1, 1)             \
+  F(UnblockConcurrentRecompilation, 0, 1)     \
+  F(GetOptimizationCount, 1, 1)               \
+  F(GetUndetectable, 0, 1)                    \
+  F(ClearFunctionTypeFeedback, 1, 1)          \
+  F(NotifyContextDisposed, 0, 1)              \
+  F(SetAllocationTimeout, -1 /* 2 || 3 */, 1) \
+  F(DebugPrint, 1, 1)                         \
+  F(DebugTrace, 0, 1)                         \
+  F(GlobalPrint, 1, 1)                        \
+  F(SystemBreak, 0, 1)                        \
+  F(SetFlags, 1, 1)                           \
+  F(Abort, 1, 1)                              \
+  F(AbortJS, 1, 1)                            \
+  F(NativeScriptsCount, 0, 1)                 \
+  F(GetV8Version, 0, 1)                       \
+  F(DisassembleFunction, 1, 1)                \
+  F(TraceEnter, 0, 1)                         \
+  F(TraceExit, 1, 1)                          \
+  F(HaveSameMap, 2, 1)                        \
+  F(InNewSpace, 1, 1)                         \
+  F(HasFastSmiElements, 1, 1)                 \
+  F(HasFastObjectElements, 1, 1)              \
+  F(HasFastSmiOrObjectElements, 1, 1)         \
+  F(HasFastDoubleElements, 1, 1)              \
+  F(HasFastHoleyElements, 1, 1)               \
+  F(HasDictionaryElements, 1, 1)              \
+  F(HasSloppyArgumentsElements, 1, 1)         \
+  F(HasFixedTypedArrayElements, 1, 1)         \
+  F(HasFastProperties, 1, 1)                  \
+  F(HasFixedUint8Elements, 1, 1)              \
+  F(HasFixedInt8Elements, 1, 1)               \
+  F(HasFixedUint16Elements, 1, 1)             \
+  F(HasFixedInt16Elements, 1, 1)              \
+  F(HasFixedUint32Elements, 1, 1)             \
+  F(HasFixedInt32Elements, 1, 1)              \
+  F(HasFixedFloat32Elements, 1, 1)            \
+  F(HasFixedFloat64Elements, 1, 1)            \
+  F(HasFixedUint8ClampedElements, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_TYPEDARRAY(F)     \
+  F(ArrayBufferGetByteLength, 1, 1)          \
+  F(ArrayBufferSliceImpl, 4, 1)              \
+  F(ArrayBufferNeuter, 1, 1)                 \
+  F(TypedArrayInitialize, 6, 1)              \
+  F(TypedArrayInitializeFromArrayLike, 4, 1) \
+  F(ArrayBufferViewGetByteLength, 1, 1)      \
+  F(ArrayBufferViewGetByteOffset, 1, 1)      \
+  F(TypedArrayGetLength, 1, 1)               \
+  F(DataViewGetBuffer, 1, 1)                 \
+  F(TypedArrayGetBuffer, 1, 1)               \
+  F(TypedArraySetFastCases, 3, 1)            \
+  F(TypedArrayMaxSizeInHeap, 0, 1)           \
+  F(IsTypedArray, 1, 1)                      \
+  F(IsSharedTypedArray, 1, 1)                \
+  F(IsSharedIntegerTypedArray, 1, 1)         \
+  F(IsSharedInteger32TypedArray, 1, 1)       \
+  F(DataViewInitialize, 4, 1)                \
+  F(DataViewGetUint8, 3, 1)                  \
+  F(DataViewGetInt8, 3, 1)                   \
+  F(DataViewGetUint16, 3, 1)                 \
+  F(DataViewGetInt16, 3, 1)                  \
+  F(DataViewGetUint32, 3, 1)                 \
+  F(DataViewGetInt32, 3, 1)                  \
+  F(DataViewGetFloat32, 3, 1)                \
+  F(DataViewGetFloat64, 3, 1)                \
+  F(DataViewSetUint8, 4, 1)                  \
+  F(DataViewSetInt8, 4, 1)                   \
+  F(DataViewSetUint16, 4, 1)                 \
+  F(DataViewSetInt16, 4, 1)                  \
+  F(DataViewSetUint32, 4, 1)                 \
+  F(DataViewSetInt32, 4, 1)                  \
+  F(DataViewSetFloat32, 4, 1)                \
+  F(DataViewSetFloat64, 4, 1)
+
+
+#define FOR_EACH_INTRINSIC_URI(F) \
+  F(URIEscape, 1, 1)              \
+  F(URIUnescape, 1, 1)
+
+
+#define FOR_EACH_INTRINSIC_RETURN_PAIR(F) \
+  F(LoadLookupSlot, 2, 2)                 \
+  F(LoadLookupSlotNoReferenceError, 2, 2)
+
+
+// Most intrinsics are implemented in the runtime/ directory, but ICs are
+// implemented in ic.cc for now.
+#define FOR_EACH_INTRINSIC_IC(F)             \
+  F(BinaryOpIC_Miss, 2, 1)                   \
+  F(BinaryOpIC_MissWithAllocationSite, 3, 1) \
+  F(CallIC_Miss, 3, 1)                       \
+  F(CompareIC_Miss, 3, 1)                    \
+  F(CompareNilIC_Miss, 1, 1)                 \
+  F(ElementsTransitionAndStoreIC_Miss, 5, 1) \
+  F(KeyedLoadIC_Miss, 4, 1)                  \
+  F(KeyedLoadIC_MissFromStubFailure, 4, 1)   \
+  F(KeyedStoreIC_Miss, 5, 1)                 \
+  F(KeyedStoreIC_MissFromStubFailure, 5, 1)  \
+  F(KeyedStoreIC_Slow, 5, 1)                 \
+  F(LoadElementWithInterceptor, 2, 1)        \
+  F(LoadIC_Miss, 4, 1)                       \
+  F(LoadIC_MissFromStubFailure, 4, 1)        \
+  F(LoadPropertyWithInterceptor, 3, 1)       \
+  F(LoadPropertyWithInterceptorOnly, 3, 1)   \
+  F(StoreCallbackProperty, 5, 1)             \
+  F(StoreIC_Miss, 5, 1)                      \
+  F(StoreIC_MissFromStubFailure, 5, 1)       \
+  F(StoreIC_Slow, 5, 1)                      \
+  F(StorePropertyWithInterceptor, 3, 1)      \
+  F(ToBooleanIC_Miss, 1, 1)                  \
+  F(Unreachable, 0, 1)
+
+
+#define FOR_EACH_INTRINSIC_RETURN_OBJECT(F) \
+  FOR_EACH_INTRINSIC_IC(F)                  \
+  FOR_EACH_INTRINSIC_ARRAY(F)               \
+  FOR_EACH_INTRINSIC_ATOMICS(F)             \
+  FOR_EACH_INTRINSIC_CLASSES(F)             \
+  FOR_EACH_INTRINSIC_COLLECTIONS(F)         \
+  FOR_EACH_INTRINSIC_COMPILER(F)            \
+  FOR_EACH_INTRINSIC_DATE(F)                \
+  FOR_EACH_INTRINSIC_DEBUG(F)               \
+  FOR_EACH_INTRINSIC_FORIN(F)               \
+  FOR_EACH_INTRINSIC_INTERPRETER(F)         \
+  FOR_EACH_INTRINSIC_FUNCTION(F)            \
+  FOR_EACH_INTRINSIC_FUTEX(F)               \
+  FOR_EACH_INTRINSIC_GENERATOR(F)           \
+  FOR_EACH_INTRINSIC_I18N(F)                \
+  FOR_EACH_INTRINSIC_INTERNAL(F)            \
+  FOR_EACH_INTRINSIC_JSON(F)                \
+  FOR_EACH_INTRINSIC_LITERALS(F)            \
+  FOR_EACH_INTRINSIC_LIVEEDIT(F)            \
+  FOR_EACH_INTRINSIC_MATHS(F)               \
+  FOR_EACH_INTRINSIC_NUMBERS(F)             \
+  FOR_EACH_INTRINSIC_OBJECT(F)              \
+  FOR_EACH_INTRINSIC_OBSERVE(F)             \
+  FOR_EACH_INTRINSIC_OPERATORS(F)           \
+  FOR_EACH_INTRINSIC_PROXY(F)               \
+  FOR_EACH_INTRINSIC_REGEXP(F)              \
+  FOR_EACH_INTRINSIC_SCOPES(F)              \
+  FOR_EACH_INTRINSIC_SIMD(F)                \
+  FOR_EACH_INTRINSIC_STRINGS(F)             \
+  FOR_EACH_INTRINSIC_SYMBOL(F)              \
+  FOR_EACH_INTRINSIC_TEST(F)                \
+  FOR_EACH_INTRINSIC_TYPEDARRAY(F)          \
+  FOR_EACH_INTRINSIC_URI(F)
+
+// FOR_EACH_INTRINSIC defines the list of all intrinsics, coming in 2 flavors,
+// either returning an object or a pair.
+#define FOR_EACH_INTRINSIC(F)       \
+  FOR_EACH_INTRINSIC_RETURN_PAIR(F) \
+  FOR_EACH_INTRINSIC_RETURN_OBJECT(F)
+
+
+#define F(name, nargs, ressize)                                 \
+  Object* Runtime_##name(int args_length, Object** args_object, \
+                         Isolate* isolate);
+FOR_EACH_INTRINSIC_RETURN_OBJECT(F)
+#undef F
+
 //---------------------------------------------------------------------------
 // Runtime provides access to all C++ runtime functions.
 
-class RuntimeState {
- public:
-  unibrow::Mapping<unibrow::ToUppercase, 128>* to_upper_mapping() {
-    return &to_upper_mapping_;
-  }
-  unibrow::Mapping<unibrow::ToLowercase, 128>* to_lower_mapping() {
-    return &to_lower_mapping_;
-  }
-
- private:
-  RuntimeState() {}
-  unibrow::Mapping<unibrow::ToUppercase, 128> to_upper_mapping_;
-  unibrow::Mapping<unibrow::ToLowercase, 128> to_lower_mapping_;
-
-  friend class Isolate;
-  friend class Runtime;
-
-  DISALLOW_COPY_AND_ASSIGN(RuntimeState);
-};
-
-
-class JavaScriptFrameIterator;  // Forward declaration.
-
-
 class Runtime : public AllStatic {
  public:
   enum FunctionId {
 #define F(name, nargs, ressize) k##name,
-    RUNTIME_FUNCTION_LIST(F) INLINE_OPTIMIZED_FUNCTION_LIST(F)
-#undef F
-#define F(name, nargs, ressize) kInline##name,
-    INLINE_FUNCTION_LIST(F)
-#undef F
-#define F(name, nargs, ressize) kInlineOptimized##name,
-    INLINE_OPTIMIZED_FUNCTION_LIST(F)
+#define I(name, nargs, ressize) kInline##name,
+  FOR_EACH_INTRINSIC(F)
+  FOR_EACH_INTRINSIC(I)
+#undef I
 #undef F
     kNumFunctions,
-    kFirstInlineFunction = kInlineIsSmi
   };
 
-  enum IntrinsicType { RUNTIME, INLINE, INLINE_OPTIMIZED };
+  enum IntrinsicType { RUNTIME, INLINE };
 
   // Intrinsic function descriptor.
   struct Function {
@@ -785,14 +1109,15 @@
     // The JS name of the function.
     const char* name;
 
-    // The C++ (native) entry point.  NULL if the function is inlined.
-    byte* entry;
+    // For RUNTIME functions, this is the C++ entry point.
+    // For INLINE functions this is the C++ entry point of the fall back.
+    Address entry;
 
     // The number of arguments expected. nargs is -1 if the function takes
     // a variable number of arguments.
-    int nargs;
+    int8_t nargs;
     // Size of result.  Most functions return a single pointer, size 1.
-    int result_size;
+    int8_t result_size;
   };
 
   static const int kNotFound = -1;
@@ -811,50 +1136,23 @@
   // Get the intrinsic function with the given function entry address.
   static const Function* FunctionForEntry(Address ref);
 
-  // TODO(1240886): Some of the following methods are *not* handle safe, but
-  // accept handle arguments. This seems fragile.
+  // Get the runtime intrinsic function table.
+  static const Function* RuntimeFunctionTable(Isolate* isolate);
 
-  // Support getting the characters in a string using [] notation as
-  // in Firefox/SpiderMonkey, Safari and Opera.
-  MUST_USE_RESULT static MaybeHandle<Object> GetElementOrCharAt(
-      Isolate* isolate, Handle<Object> object, uint32_t index);
+  MUST_USE_RESULT static Maybe<bool> DeleteObjectProperty(
+      Isolate* isolate, Handle<JSReceiver> receiver, Handle<Object> key,
+      LanguageMode language_mode);
 
   MUST_USE_RESULT static MaybeHandle<Object> SetObjectProperty(
       Isolate* isolate, Handle<Object> object, Handle<Object> key,
-      Handle<Object> value, StrictMode strict_mode);
-
-  MUST_USE_RESULT static MaybeHandle<Object> DefineObjectProperty(
-      Handle<JSObject> object, Handle<Object> key, Handle<Object> value,
-      PropertyAttributes attr);
+      Handle<Object> value, LanguageMode language_mode);
 
   MUST_USE_RESULT static MaybeHandle<Object> GetObjectProperty(
-      Isolate* isolate, Handle<Object> object, Handle<Object> key);
-
-  MUST_USE_RESULT static MaybeHandle<Object> GetPrototype(
-      Isolate* isolate, Handle<Object> object);
-
-  MUST_USE_RESULT static MaybeHandle<Name> ToName(Isolate* isolate,
-                                                  Handle<Object> key);
-
-  static void SetupArrayBuffer(Isolate* isolate,
-                               Handle<JSArrayBuffer> array_buffer,
-                               bool is_external, void* data,
-                               size_t allocated_length);
-
-  static bool SetupArrayBufferAllocatingData(Isolate* isolate,
-                                             Handle<JSArrayBuffer> array_buffer,
-                                             size_t allocated_length,
-                                             bool initialize = true);
-
-  static void NeuterArrayBuffer(Handle<JSArrayBuffer> array_buffer);
-
-  static void FreeArrayBuffer(Isolate* isolate,
-                              JSArrayBuffer* phantom_array_buffer);
-
-  static int FindIndexedNonNativeFrame(JavaScriptFrameIterator* it, int index);
+      Isolate* isolate, Handle<Object> object, Handle<Object> key,
+      LanguageMode language_mode = SLOPPY);
 
   enum TypedArrayId {
-    // arrayIds below should be synchromized with typedarray.js natives.
+    // arrayIds below should be synchronized with typedarray.js natives.
     ARRAY_ID_UINT8 = 1,
     ARRAY_ID_INT8 = 2,
     ARRAY_ID_UINT16 = 3,
@@ -869,14 +1167,48 @@
   };
 
   static void ArrayIdToTypeAndSize(int array_id, ExternalArrayType* type,
-                                   ElementsKind* external_elements_kind,
                                    ElementsKind* fixed_elements_kind,
                                    size_t* element_size);
 
   // Used in runtime.cc and hydrogen's VisitArrayLiteral.
   MUST_USE_RESULT static MaybeHandle<Object> CreateArrayLiteralBoilerplate(
-      Isolate* isolate, Handle<FixedArray> literals,
-      Handle<FixedArray> elements);
+      Isolate* isolate, Handle<LiteralsArray> literals,
+      Handle<FixedArray> elements, bool is_strong);
+
+  static MaybeHandle<JSArray> GetInternalProperties(Isolate* isolate,
+                                                    Handle<Object>);
+};
+
+
+class RuntimeState {
+ public:
+  unibrow::Mapping<unibrow::ToUppercase, 128>* to_upper_mapping() {
+    return &to_upper_mapping_;
+  }
+  unibrow::Mapping<unibrow::ToLowercase, 128>* to_lower_mapping() {
+    return &to_lower_mapping_;
+  }
+
+  Runtime::Function* redirected_intrinsic_functions() {
+    return redirected_intrinsic_functions_.get();
+  }
+
+  void set_redirected_intrinsic_functions(
+      Runtime::Function* redirected_intrinsic_functions) {
+    redirected_intrinsic_functions_.Reset(redirected_intrinsic_functions);
+  }
+
+ private:
+  RuntimeState() {}
+  unibrow::Mapping<unibrow::ToUppercase, 128> to_upper_mapping_;
+  unibrow::Mapping<unibrow::ToLowercase, 128> to_lower_mapping_;
+
+  base::SmartArrayPointer<Runtime::Function> redirected_intrinsic_functions_;
+
+  friend class Isolate;
+  friend class Runtime;
+
+  DISALLOW_COPY_AND_ASSIGN(RuntimeState);
 };
 
 
@@ -890,7 +1222,8 @@
 
 class DeclareGlobalsEvalFlag : public BitField<bool, 0, 1> {};
 class DeclareGlobalsNativeFlag : public BitField<bool, 1, 1> {};
-class DeclareGlobalsStrictMode : public BitField<StrictMode, 2, 1> {};
+STATIC_ASSERT(LANGUAGE_END == 3);
+class DeclareGlobalsLanguageMode : public BitField<LanguageMode, 2, 2> {};
 
 }  // namespace internal
 }  // namespace v8
