Merge V8 5.2.361.47 DO NOT MERGE
https://chromium.googlesource.com/v8/v8/+/5.2.361.47
FPIIM-449
Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/src/builtins.h b/src/builtins.h
index 221d06f..ff1d77d 100644
--- a/src/builtins.h
+++ b/src/builtins.h
@@ -11,13 +11,9 @@
namespace v8 {
namespace internal {
-namespace compiler {
-
// Forward declarations.
class CodeStubAssembler;
-} // namespace compiler
-
// Specifies extra arguments required by a C++ builtin.
enum class BuiltinExtraArguments : uint8_t {
kNone = 0u,
@@ -64,7 +60,6 @@
V(EmptyFunction, kNone) \
\
V(ArrayConcat, kNone) \
- V(ArrayIsArray, kNone) \
V(ArrayPop, kNone) \
V(ArrayPush, kNone) \
V(ArrayShift, kNone) \
@@ -119,6 +114,10 @@
V(FunctionPrototypeToString, kNone) \
\
V(GeneratorFunctionConstructor, kTargetAndNewTarget) \
+ V(AsyncFunctionConstructor, kTargetAndNewTarget) \
+ \
+ V(GlobalEncodeURI, kNone) \
+ V(GlobalEncodeURIComponent, kNone) \
\
V(GlobalEval, kTarget) \
\
@@ -130,21 +129,28 @@
\
V(ObjectAssign, kNone) \
V(ObjectCreate, kNone) \
+ V(ObjectDefineGetter, kNone) \
+ V(ObjectDefineProperties, kNone) \
+ V(ObjectDefineProperty, kNone) \
+ V(ObjectDefineSetter, kNone) \
+ V(ObjectEntries, kNone) \
V(ObjectFreeze, kNone) \
V(ObjectGetOwnPropertyDescriptor, kNone) \
+ V(ObjectGetOwnPropertyDescriptors, kNone) \
V(ObjectGetOwnPropertyNames, kNone) \
V(ObjectGetOwnPropertySymbols, kNone) \
+ V(ObjectGetPrototypeOf, kNone) \
V(ObjectIs, kNone) \
V(ObjectIsExtensible, kNone) \
V(ObjectIsFrozen, kNone) \
V(ObjectIsSealed, kNone) \
V(ObjectKeys, kNone) \
- V(ObjectValues, kNone) \
- V(ObjectEntries, kNone) \
- V(ObjectGetOwnPropertyDescriptors, kNone) \
+ V(ObjectLookupGetter, kNone) \
+ V(ObjectLookupSetter, kNone) \
V(ObjectPreventExtensions, kNone) \
- V(ObjectSeal, kNone) \
V(ObjectProtoToString, kNone) \
+ V(ObjectSeal, kNone) \
+ V(ObjectValues, kNone) \
\
V(ProxyConstructor, kNone) \
V(ProxyConstructor_ConstructStub, kTarget) \
@@ -166,8 +172,7 @@
V(SymbolConstructor, kNone) \
V(SymbolConstructor_ConstructStub, kTarget) \
\
- V(HandleApiCall, kTarget) \
- V(HandleApiCallConstruct, kTarget) \
+ V(HandleApiCall, kTargetAndNewTarget) \
V(HandleApiCallAsFunction, kNone) \
V(HandleApiCallAsConstructor, kNone) \
\
@@ -176,6 +181,9 @@
// Define list of builtins implemented in assembly.
#define BUILTIN_LIST_A(V) \
+ V(AllocateInNewSpace, BUILTIN, UNINITIALIZED, kNoExtraICState) \
+ V(AllocateInOldSpace, BUILTIN, UNINITIALIZED, kNoExtraICState) \
+ \
V(ArgumentsAdaptorTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \
\
V(ConstructedNonConstructable, BUILTIN, UNINITIALIZED, kNoExtraICState) \
@@ -219,7 +227,9 @@
V(JSConstructStubApi, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(JSEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(JSConstructEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \
+ V(ResumeGeneratorTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(CompileLazy, BUILTIN, UNINITIALIZED, kNoExtraICState) \
+ V(CompileBaseline, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(CompileOptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(CompileOptimizedConcurrent, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(NotifyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \
@@ -229,13 +239,9 @@
V(NotifyStubFailureSaveDoubles, BUILTIN, UNINITIALIZED, kNoExtraICState) \
\
V(InterpreterEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \
- V(InterpreterExitTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(InterpreterPushArgsAndCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(InterpreterPushArgsAndTailCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(InterpreterPushArgsAndConstruct, BUILTIN, UNINITIALIZED, kNoExtraICState) \
- V(InterpreterNotifyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \
- V(InterpreterNotifySoftDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \
- V(InterpreterNotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(InterpreterEnterBytecodeDispatch, BUILTIN, UNINITIALIZED, kNoExtraICState) \
\
V(LoadIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \
@@ -248,15 +254,11 @@
V(StoreIC_Setter_ForDeopt, STORE_IC, MONOMORPHIC, \
StoreICState::kStrictModeState) \
\
- V(KeyedStoreIC_Initialize, KEYED_STORE_IC, UNINITIALIZED, kNoExtraICState) \
- V(KeyedStoreIC_PreMonomorphic, KEYED_STORE_IC, PREMONOMORPHIC, \
- kNoExtraICState) \
- V(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, MEGAMORPHIC, kNoExtraICState) \
+ V(StoreIC_Megamorphic, STORE_IC, MEGAMORPHIC, kNoExtraICState) \
+ V(StoreIC_Megamorphic_Strict, STORE_IC, MEGAMORPHIC, \
+ StoreICState::kStrictModeState) \
\
- V(KeyedStoreIC_Initialize_Strict, KEYED_STORE_IC, UNINITIALIZED, \
- StoreICState::kStrictModeState) \
- V(KeyedStoreIC_PreMonomorphic_Strict, KEYED_STORE_IC, PREMONOMORPHIC, \
- StoreICState::kStrictModeState) \
+ V(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, MEGAMORPHIC, kNoExtraICState) \
V(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, MEGAMORPHIC, \
StoreICState::kStrictModeState) \
\
@@ -279,7 +281,6 @@
V(DatePrototypeGetUTCMonth, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(DatePrototypeGetUTCSeconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \
\
- V(FunctionHasInstance, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(FunctionPrototypeApply, BUILTIN, UNINITIALIZED, kNoExtraICState) \
V(FunctionPrototypeCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \
\
@@ -308,14 +309,23 @@
CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V)
// Define list of builtins implemented in TurboFan (with JS linkage).
-#define BUILTIN_LIST_T(V) \
- V(MathCeil, 2) \
- V(MathClz32, 2) \
- V(MathFloor, 2) \
- V(MathRound, 2) \
- V(MathSqrt, 2) \
- V(MathTrunc, 2) \
- V(ObjectHasOwnProperty, 2)
+#define BUILTIN_LIST_T(V) \
+ V(FunctionPrototypeHasInstance, 2) \
+ V(GeneratorPrototypeNext, 2) \
+ V(GeneratorPrototypeReturn, 2) \
+ V(GeneratorPrototypeThrow, 2) \
+ V(MathCeil, 2) \
+ V(MathClz32, 2) \
+ V(MathFloor, 2) \
+ V(MathRound, 2) \
+ V(MathSqrt, 2) \
+ V(MathTrunc, 2) \
+ V(ObjectHasOwnProperty, 2) \
+ V(ArrayIsArray, 2) \
+ V(StringPrototypeCharAt, 2) \
+ V(StringPrototypeCharCodeAt, 2) \
+ V(AtomicsLoad, 3) \
+ V(AtomicsStore, 4)
// Define list of builtin handlers implemented in assembly.
#define BUILTIN_LIST_H(V) \
@@ -439,8 +449,11 @@
static void Generate_Adaptor(MacroAssembler* masm,
CFunctionId id,
BuiltinExtraArguments extra_args);
+ static void Generate_AllocateInNewSpace(MacroAssembler* masm);
+ static void Generate_AllocateInOldSpace(MacroAssembler* masm);
static void Generate_ConstructedNonConstructable(MacroAssembler* masm);
static void Generate_CompileLazy(MacroAssembler* masm);
+ static void Generate_CompileBaseline(MacroAssembler* masm);
static void Generate_InOptimizationQueue(MacroAssembler* masm);
static void Generate_CompileOptimized(MacroAssembler* masm);
static void Generate_CompileOptimizedConcurrent(MacroAssembler* masm);
@@ -450,6 +463,7 @@
static void Generate_JSConstructStubApi(MacroAssembler* masm);
static void Generate_JSEntryTrampoline(MacroAssembler* masm);
static void Generate_JSConstructEntryTrampoline(MacroAssembler* masm);
+ static void Generate_ResumeGeneratorTrampoline(MacroAssembler* masm);
static void Generate_NotifyDeoptimized(MacroAssembler* masm);
static void Generate_NotifySoftDeoptimized(MacroAssembler* masm);
static void Generate_NotifyLazyDeoptimized(MacroAssembler* masm);
@@ -578,7 +592,6 @@
// ES6 section 20.3.4.19 Date.prototype.getUTCSeconds ( )
static void Generate_DatePrototypeGetUTCSeconds(MacroAssembler* masm);
- static void Generate_FunctionHasInstance(MacroAssembler* masm);
static void Generate_FunctionPrototypeApply(MacroAssembler* masm);
static void Generate_FunctionPrototypeCall(MacroAssembler* masm);
@@ -589,11 +602,11 @@
static void Generate_ArrayCode(MacroAssembler* masm);
// ES6 section 20.2.2.10 Math.ceil ( x )
- static void Generate_MathCeil(compiler::CodeStubAssembler* assembler);
+ static void Generate_MathCeil(CodeStubAssembler* assembler);
// ES6 section 20.2.2.11 Math.clz32 ( x )
- static void Generate_MathClz32(compiler::CodeStubAssembler* assembler);
+ static void Generate_MathClz32(CodeStubAssembler* assembler);
// ES6 section 20.2.2.16 Math.floor ( x )
- static void Generate_MathFloor(compiler::CodeStubAssembler* assembler);
+ static void Generate_MathFloor(CodeStubAssembler* assembler);
enum class MathMaxMinKind { kMax, kMin };
static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind);
// ES6 section 20.2.2.24 Math.max ( value1, value2 , ...values )
@@ -605,20 +618,38 @@
Generate_MathMaxMin(masm, MathMaxMinKind::kMin);
}
// ES6 section 20.2.2.28 Math.round ( x )
- static void Generate_MathRound(compiler::CodeStubAssembler* assembler);
+ static void Generate_MathRound(CodeStubAssembler* assembler);
// ES6 section 20.2.2.32 Math.sqrt ( x )
- static void Generate_MathSqrt(compiler::CodeStubAssembler* assembler);
+ static void Generate_MathSqrt(CodeStubAssembler* assembler);
// ES6 section 20.2.2.35 Math.trunc ( x )
- static void Generate_MathTrunc(compiler::CodeStubAssembler* assembler);
+ static void Generate_MathTrunc(CodeStubAssembler* assembler);
// ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Call]] case.
static void Generate_NumberConstructor(MacroAssembler* masm);
// ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Construct]] case.
static void Generate_NumberConstructor_ConstructStub(MacroAssembler* masm);
+ // ES6 section 19.2.3.6 Function.prototype [ @@hasInstance ] ( V )
+ static void Generate_FunctionPrototypeHasInstance(
+ CodeStubAssembler* assembler);
+
+ // ES6 section 25.3.1.2 Generator.prototype.next ( value )
+ static void Generate_GeneratorPrototypeNext(CodeStubAssembler* assembler);
+ // ES6 section 25.3.1.3 Generator.prototype.return ( value )
+ static void Generate_GeneratorPrototypeReturn(CodeStubAssembler* assembler);
+ // ES6 section 25.3.1.4 Generator.prototype.throw ( exception )
+ static void Generate_GeneratorPrototypeThrow(CodeStubAssembler* assembler);
+
// ES6 section 19.1.3.2 Object.prototype.hasOwnProperty
- static void Generate_ObjectHasOwnProperty(
- compiler::CodeStubAssembler* assembler);
+ static void Generate_ObjectHasOwnProperty(CodeStubAssembler* assembler);
+
+ // ES6 section 22.1.2.2 Array.isArray
+ static void Generate_ArrayIsArray(CodeStubAssembler* assembler);
+
+ // ES6 section 21.1.3.1 String.prototype.charAt ( pos )
+ static void Generate_StringPrototypeCharAt(CodeStubAssembler* assembler);
+ // ES6 section 21.1.3.2 String.prototype.charCodeAt ( pos )
+ static void Generate_StringPrototypeCharCodeAt(CodeStubAssembler* assembler);
static void Generate_StringConstructor(MacroAssembler* masm);
static void Generate_StringConstructor_ConstructStub(MacroAssembler* masm);
@@ -627,7 +658,7 @@
static void Generate_StackCheck(MacroAssembler* masm);
static void Generate_InterpreterEntryTrampoline(MacroAssembler* masm);
- static void Generate_InterpreterExitTrampoline(MacroAssembler* masm);
+ static void Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm);
static void Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) {
return Generate_InterpreterPushArgsAndCallImpl(masm,
TailCallMode::kDisallow);
@@ -638,10 +669,6 @@
static void Generate_InterpreterPushArgsAndCallImpl(
MacroAssembler* masm, TailCallMode tail_call_mode);
static void Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm);
- static void Generate_InterpreterNotifyDeoptimized(MacroAssembler* masm);
- static void Generate_InterpreterNotifySoftDeoptimized(MacroAssembler* masm);
- static void Generate_InterpreterNotifyLazyDeoptimized(MacroAssembler* masm);
- static void Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm);
#define DECLARE_CODE_AGE_BUILTIN_GENERATOR(C) \
static void Generate_Make##C##CodeYoungAgainEvenMarking( \
@@ -655,6 +682,9 @@
static void Generate_MarkCodeAsExecutedOnce(MacroAssembler* masm);
static void Generate_MarkCodeAsExecutedTwice(MacroAssembler* masm);
+ static void Generate_AtomicsLoad(CodeStubAssembler* assembler);
+ static void Generate_AtomicsStore(CodeStubAssembler* assembler);
+
static void InitBuiltinFunctionTable();
bool initialized_;