Index: src/builtins/builtins.cc |
diff --git a/src/builtins/builtins.cc b/src/builtins/builtins.cc |
index 54f39f181f4a510ae43928d32e401827a8f67cc6..2a61dfe0d535b7f7725e12c74ba5816a2ff612ef 100644 |
--- a/src/builtins/builtins.cc |
+++ b/src/builtins/builtins.cc |
@@ -6229,9 +6229,7 @@ BUILTIN(HandleApiCallAsConstructor) { |
return HandleApiCallAsFunctionOrConstructor(isolate, true, args); |
} |
-namespace { |
- |
-void Generate_LoadIC_Miss(CodeStubAssembler* assembler) { |
+void Builtins::Generate_LoadIC_Miss(CodeStubAssembler* assembler) { |
typedef compiler::Node Node; |
Node* receiver = assembler->Parameter(0); |
@@ -6244,7 +6242,7 @@ void Generate_LoadIC_Miss(CodeStubAssembler* assembler) { |
slot, vector); |
} |
-void Generate_LoadGlobalIC_Miss(CodeStubAssembler* assembler) { |
+void Builtins::Generate_LoadGlobalIC_Miss(CodeStubAssembler* assembler) { |
typedef compiler::Node Node; |
Node* slot = assembler->Parameter(0); |
@@ -6255,15 +6253,15 @@ void Generate_LoadGlobalIC_Miss(CodeStubAssembler* assembler) { |
vector); |
} |
-void Generate_LoadIC_Normal(MacroAssembler* masm) { |
+void Builtins::Generate_LoadIC_Normal(MacroAssembler* masm) { |
LoadIC::GenerateNormal(masm); |
} |
-void Generate_LoadIC_Getter_ForDeopt(MacroAssembler* masm) { |
+void Builtins::Generate_LoadIC_Getter_ForDeopt(MacroAssembler* masm) { |
NamedLoadHandlerCompiler::GenerateLoadViaGetterForDeopt(masm); |
} |
-void Generate_LoadIC_Slow(CodeStubAssembler* assembler) { |
+void Builtins::Generate_LoadIC_Slow(CodeStubAssembler* assembler) { |
typedef compiler::Node Node; |
Node* receiver = assembler->Parameter(0); |
@@ -6275,6 +6273,7 @@ void Generate_LoadIC_Slow(CodeStubAssembler* assembler) { |
assembler->TailCallRuntime(Runtime::kGetProperty, context, receiver, name); |
} |
+namespace { |
void Generate_LoadGlobalIC_Slow(CodeStubAssembler* assembler, TypeofMode mode) { |
typedef compiler::Node Node; |
@@ -6286,28 +6285,31 @@ void Generate_LoadGlobalIC_Slow(CodeStubAssembler* assembler, TypeofMode mode) { |
assembler->TailCallRuntime(Runtime::kGetGlobal, context, slot, vector, |
typeof_mode); |
} |
+} // anonymous namespace |
-void Generate_LoadGlobalIC_SlowInsideTypeof(CodeStubAssembler* assembler) { |
+void Builtins::Generate_LoadGlobalIC_SlowInsideTypeof( |
+ CodeStubAssembler* assembler) { |
Generate_LoadGlobalIC_Slow(assembler, INSIDE_TYPEOF); |
} |
-void Generate_LoadGlobalIC_SlowNotInsideTypeof(CodeStubAssembler* assembler) { |
+void Builtins::Generate_LoadGlobalIC_SlowNotInsideTypeof( |
+ CodeStubAssembler* assembler) { |
Generate_LoadGlobalIC_Slow(assembler, NOT_INSIDE_TYPEOF); |
} |
-void Generate_KeyedLoadIC_Slow(MacroAssembler* masm) { |
+void Builtins::Generate_KeyedLoadIC_Slow(MacroAssembler* masm) { |
KeyedLoadIC::GenerateRuntimeGetProperty(masm); |
} |
-void Generate_KeyedLoadIC_Miss(MacroAssembler* masm) { |
+void Builtins::Generate_KeyedLoadIC_Miss(MacroAssembler* masm) { |
KeyedLoadIC::GenerateMiss(masm); |
} |
-void Generate_KeyedLoadIC_Megamorphic(MacroAssembler* masm) { |
+void Builtins::Generate_KeyedLoadIC_Megamorphic(MacroAssembler* masm) { |
KeyedLoadIC::GenerateMegamorphic(masm); |
} |
-void Generate_StoreIC_Miss(CodeStubAssembler* assembler) { |
+void Builtins::Generate_StoreIC_Miss(CodeStubAssembler* assembler) { |
typedef compiler::Node Node; |
Node* receiver = assembler->Parameter(0); |
@@ -6321,10 +6323,11 @@ void Generate_StoreIC_Miss(CodeStubAssembler* assembler) { |
value, slot, vector); |
} |
-void Generate_StoreIC_Normal(MacroAssembler* masm) { |
+void Builtins::Generate_StoreIC_Normal(MacroAssembler* masm) { |
StoreIC::GenerateNormal(masm); |
} |
+namespace { |
void Generate_StoreIC_Slow(CodeStubAssembler* assembler, |
LanguageMode language_mode) { |
typedef compiler::Node Node; |
@@ -6342,15 +6345,17 @@ void Generate_StoreIC_Slow(CodeStubAssembler* assembler, |
assembler->TailCallRuntime(Runtime::kSetProperty, context, receiver, name, |
value, lang_mode); |
} |
+} // anonymous namespace |
-void Generate_StoreIC_SlowSloppy(CodeStubAssembler* assembler) { |
+void Builtins::Generate_StoreIC_SlowSloppy(CodeStubAssembler* assembler) { |
Generate_StoreIC_Slow(assembler, SLOPPY); |
} |
-void Generate_StoreIC_SlowStrict(CodeStubAssembler* assembler) { |
+void Builtins::Generate_StoreIC_SlowStrict(CodeStubAssembler* assembler) { |
Generate_StoreIC_Slow(assembler, STRICT); |
} |
+namespace { |
// 7.1.1.1 OrdinaryToPrimitive ( O, hint ) |
void Generate_OrdinaryToPrimitive(CodeStubAssembler* assembler, |
OrdinaryToPrimitiveHint hint) { |
@@ -6421,15 +6426,19 @@ void Generate_OrdinaryToPrimitive(CodeStubAssembler* assembler, |
assembler->Bind(&return_result); |
assembler->Return(var_result.value()); |
} |
+} // anonymous namespace |
-void Generate_OrdinaryToPrimitive_Number(CodeStubAssembler* assembler) { |
+void Builtins::Generate_OrdinaryToPrimitive_Number( |
+ CodeStubAssembler* assembler) { |
Generate_OrdinaryToPrimitive(assembler, OrdinaryToPrimitiveHint::kNumber); |
} |
-void Generate_OrdinaryToPrimitive_String(CodeStubAssembler* assembler) { |
+void Builtins::Generate_OrdinaryToPrimitive_String( |
+ CodeStubAssembler* assembler) { |
Generate_OrdinaryToPrimitive(assembler, OrdinaryToPrimitiveHint::kString); |
} |
+namespace { |
// ES6 section 7.1.1 ToPrimitive ( input [ , PreferredType ] ) |
void Generate_NonPrimitiveToPrimitive(CodeStubAssembler* assembler, |
ToPrimitiveHint hint) { |
@@ -6498,21 +6507,25 @@ void Generate_NonPrimitiveToPrimitive(CodeStubAssembler* assembler, |
assembler->TailCallStub(callable, context, input); |
} |
} |
+} // anonymous namespace |
-void Generate_NonPrimitiveToPrimitive_Default(CodeStubAssembler* assembler) { |
+void Builtins::Generate_NonPrimitiveToPrimitive_Default( |
+ CodeStubAssembler* assembler) { |
Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kDefault); |
} |
-void Generate_NonPrimitiveToPrimitive_Number(CodeStubAssembler* assembler) { |
+void Builtins::Generate_NonPrimitiveToPrimitive_Number( |
+ CodeStubAssembler* assembler) { |
Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kNumber); |
} |
-void Generate_NonPrimitiveToPrimitive_String(CodeStubAssembler* assembler) { |
+void Builtins::Generate_NonPrimitiveToPrimitive_String( |
+ CodeStubAssembler* assembler) { |
Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kString); |
} |
// ES6 section 7.1.3 ToNumber ( argument ) |
-void Generate_NonNumberToNumber(CodeStubAssembler* assembler) { |
+void Builtins::Generate_NonNumberToNumber(CodeStubAssembler* assembler) { |
typedef CodeStubAssembler::Label Label; |
typedef compiler::Node Node; |
typedef CodeStubAssembler::Variable Variable; |
@@ -6609,42 +6622,40 @@ void Generate_NonNumberToNumber(CodeStubAssembler* assembler) { |
} |
} |
-void Generate_KeyedStoreIC_Slow(MacroAssembler* masm) { |
+void Builtins::Generate_KeyedStoreIC_Slow(MacroAssembler* masm) { |
ElementHandlerCompiler::GenerateStoreSlow(masm); |
} |
-void Generate_StoreIC_Setter_ForDeopt(MacroAssembler* masm) { |
+void Builtins::Generate_StoreIC_Setter_ForDeopt(MacroAssembler* masm) { |
NamedStoreHandlerCompiler::GenerateStoreViaSetterForDeopt(masm); |
} |
-void Generate_KeyedStoreIC_Megamorphic(MacroAssembler* masm) { |
+void Builtins::Generate_KeyedStoreIC_Megamorphic(MacroAssembler* masm) { |
KeyedStoreIC::GenerateMegamorphic(masm, SLOPPY); |
} |
-void Generate_KeyedStoreIC_Megamorphic_Strict(MacroAssembler* masm) { |
+void Builtins::Generate_KeyedStoreIC_Megamorphic_Strict(MacroAssembler* masm) { |
KeyedStoreIC::GenerateMegamorphic(masm, STRICT); |
} |
-void Generate_KeyedStoreIC_Miss(MacroAssembler* masm) { |
+void Builtins::Generate_KeyedStoreIC_Miss(MacroAssembler* masm) { |
KeyedStoreIC::GenerateMiss(masm); |
} |
-void Generate_Return_DebugBreak(MacroAssembler* masm) { |
+void Builtins::Generate_Return_DebugBreak(MacroAssembler* masm) { |
DebugCodegen::GenerateDebugBreakStub(masm, |
DebugCodegen::SAVE_RESULT_REGISTER); |
} |
-void Generate_Slot_DebugBreak(MacroAssembler* masm) { |
+void Builtins::Generate_Slot_DebugBreak(MacroAssembler* masm) { |
DebugCodegen::GenerateDebugBreakStub(masm, |
DebugCodegen::IGNORE_RESULT_REGISTER); |
} |
-void Generate_FrameDropper_LiveEdit(MacroAssembler* masm) { |
+void Builtins::Generate_FrameDropper_LiveEdit(MacroAssembler* masm) { |
DebugCodegen::GenerateFrameDropperLiveEdit(masm); |
} |
-} // namespace |
- |
Builtins::Builtins() : initialized_(false) { |
memset(builtins_, 0, sizeof(builtins_[0]) * builtin_count); |
} |
@@ -7069,6 +7080,107 @@ void Builtins::Generate_AtomicsStore(CodeStubAssembler* a) { |
a->Return(a->Int32Constant(0)); |
} |
+void Builtins::Generate_CallFunction_ReceiverIsNullOrUndefined( |
+ MacroAssembler* masm) { |
+ Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined, |
+ TailCallMode::kDisallow); |
+} |
+ |
+void Builtins::Generate_CallFunction_ReceiverIsNotNullOrUndefined( |
+ MacroAssembler* masm) { |
+ Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined, |
+ TailCallMode::kDisallow); |
+} |
+ |
+void Builtins::Generate_CallFunction_ReceiverIsAny(MacroAssembler* masm) { |
+ Generate_CallFunction(masm, ConvertReceiverMode::kAny, |
+ TailCallMode::kDisallow); |
+} |
+ |
+void Builtins::Generate_TailCallFunction_ReceiverIsNullOrUndefined( |
+ MacroAssembler* masm) { |
+ Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined, |
+ TailCallMode::kAllow); |
+} |
+ |
+void Builtins::Generate_TailCallFunction_ReceiverIsNotNullOrUndefined( |
+ MacroAssembler* masm) { |
+ Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined, |
+ TailCallMode::kAllow); |
+} |
+ |
+void Builtins::Generate_TailCallFunction_ReceiverIsAny(MacroAssembler* masm) { |
+ Generate_CallFunction(masm, ConvertReceiverMode::kAny, TailCallMode::kAllow); |
+} |
+ |
+void Builtins::Generate_CallBoundFunction(MacroAssembler* masm) { |
+ Generate_CallBoundFunctionImpl(masm, TailCallMode::kDisallow); |
+} |
+ |
+void Builtins::Generate_TailCallBoundFunction(MacroAssembler* masm) { |
+ Generate_CallBoundFunctionImpl(masm, TailCallMode::kAllow); |
+} |
+ |
+void Builtins::Generate_Call_ReceiverIsNullOrUndefined(MacroAssembler* masm) { |
+ Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined, |
+ TailCallMode::kDisallow); |
+} |
+ |
+void Builtins::Generate_Call_ReceiverIsNotNullOrUndefined( |
+ MacroAssembler* masm) { |
+ Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined, |
+ TailCallMode::kDisallow); |
+} |
+ |
+void Builtins::Generate_Call_ReceiverIsAny(MacroAssembler* masm) { |
+ Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kDisallow); |
+} |
+ |
+void Builtins::Generate_TailCall_ReceiverIsNullOrUndefined( |
+ MacroAssembler* masm) { |
+ Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined, |
+ TailCallMode::kAllow); |
+} |
+ |
+void Builtins::Generate_TailCall_ReceiverIsNotNullOrUndefined( |
+ MacroAssembler* masm) { |
+ Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined, |
+ TailCallMode::kAllow); |
+} |
+ |
+void Builtins::Generate_TailCall_ReceiverIsAny(MacroAssembler* masm) { |
+ Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kAllow); |
+} |
+ |
+void Builtins::Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) { |
+ return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kDisallow, |
+ CallableType::kAny); |
+} |
+void Builtins::Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) { |
+ return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow, |
+ CallableType::kAny); |
+} |
+ |
+void Builtins::Generate_InterpreterPushArgsAndCallFunction( |
+ MacroAssembler* masm) { |
+ return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kDisallow, |
+ CallableType::kJSFunction); |
+} |
+ |
+void Builtins::Generate_InterpreterPushArgsAndTailCallFunction( |
+ MacroAssembler* masm) { |
+ return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow, |
+ CallableType::kJSFunction); |
+} |
+ |
+void Builtins::Generate_MathMax(MacroAssembler* masm) { |
+ Generate_MathMaxMin(masm, MathMaxMinKind::kMax); |
+} |
+ |
+void Builtins::Generate_MathMin(MacroAssembler* masm) { |
+ Generate_MathMaxMin(masm, MathMaxMinKind::kMin); |
+} |
+ |
#define DEFINE_BUILTIN_ACCESSOR(Name, ...) \ |
Handle<Code> Builtins::Name() { \ |
Code** code_address = reinterpret_cast<Code**>(builtin_address(k##Name)); \ |