| Index: src/builtins/x64/builtins-x64.cc
|
| diff --git a/src/x64/builtins-x64.cc b/src/builtins/x64/builtins-x64.cc
|
| similarity index 99%
|
| rename from src/x64/builtins-x64.cc
|
| rename to src/builtins/x64/builtins-x64.cc
|
| index bdf00451acb85afb16a610b90f9d97e4b3f6d426..dfd653fdea1ad75b65b1cd9819522493aa2307a7 100644
|
| --- a/src/x64/builtins-x64.cc
|
| +++ b/src/builtins/x64/builtins-x64.cc
|
| @@ -12,7 +12,6 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -
|
| #define __ ACCESS_MASM(masm)
|
|
|
| void Builtins::Generate_Adaptor(MacroAssembler* masm, CFunctionId id,
|
| @@ -54,7 +53,6 @@ void Builtins::Generate_Adaptor(MacroAssembler* masm, CFunctionId id,
|
| exit_frame_type == BUILTIN_EXIT);
|
| }
|
|
|
| -
|
| static void GenerateTailCallToSharedCode(MacroAssembler* masm) {
|
| __ movp(kScratchRegister,
|
| FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset));
|
| @@ -111,7 +109,6 @@ void Builtins::Generate_InOptimizationQueue(MacroAssembler* masm) {
|
| GenerateTailCallToSharedCode(masm);
|
| }
|
|
|
| -
|
| static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
| bool is_api_function,
|
| bool create_implicit_receiver,
|
| @@ -246,38 +243,31 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
| __ ret(0);
|
| }
|
|
|
| -
|
| void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
|
| Generate_JSConstructStubHelper(masm, false, true, false);
|
| }
|
|
|
| -
|
| void Builtins::Generate_JSConstructStubApi(MacroAssembler* masm) {
|
| Generate_JSConstructStubHelper(masm, true, false, false);
|
| }
|
|
|
| -
|
| void Builtins::Generate_JSBuiltinsConstructStub(MacroAssembler* masm) {
|
| Generate_JSConstructStubHelper(masm, false, false, false);
|
| }
|
|
|
| -
|
| void Builtins::Generate_JSBuiltinsConstructStubForDerived(
|
| MacroAssembler* masm) {
|
| Generate_JSConstructStubHelper(masm, false, false, true);
|
| }
|
|
|
| -
|
| void Builtins::Generate_ConstructedNonConstructable(MacroAssembler* masm) {
|
| FrameScope scope(masm, StackFrame::INTERNAL);
|
| __ Push(rdi);
|
| __ CallRuntime(Runtime::kThrowConstructedNonConstructable);
|
| }
|
|
|
| -
|
| enum IsTagged { kRaxIsSmiTagged, kRaxIsUntaggedInt };
|
|
|
| -
|
| // Clobbers rcx, r11, kScratchRegister; preserves all other registers.
|
| static void Generate_CheckStackOverflow(MacroAssembler* masm,
|
| IsTagged rax_is_tagged) {
|
| @@ -311,7 +301,6 @@ static void Generate_CheckStackOverflow(MacroAssembler* masm,
|
| __ bind(&okay);
|
| }
|
|
|
| -
|
| static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
| bool is_construct) {
|
| ProfileEntryHookStub::MaybeCallEntryHook(masm);
|
| @@ -326,11 +315,11 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
|
|
| // Open a C++ scope for the FrameScope.
|
| {
|
| - // Platform specific argument handling. After this, the stack contains
|
| - // an internal frame and the pushed function and receiver, and
|
| - // register rax and rbx holds the argument count and argument array,
|
| - // while rdi holds the function pointer, rsi the context, and rdx the
|
| - // new.target.
|
| +// Platform specific argument handling. After this, the stack contains
|
| +// an internal frame and the pushed function and receiver, and
|
| +// register rax and rbx holds the argument count and argument array,
|
| +// while rdi holds the function pointer, rsi the context, and rdx the
|
| +// new.target.
|
|
|
| #ifdef _WIN64
|
| // MSVC parameters in:
|
| @@ -361,7 +350,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
| __ movp(rdi, rdx);
|
| // Load the new.target into rdx.
|
| __ movp(rdx, rcx);
|
| -#else // _WIN64
|
| +#else // _WIN64
|
| // GCC parameters in:
|
| // rdi : new_target
|
| // rsi : function
|
| @@ -441,12 +430,10 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
| __ ret(1 * kPointerSize); // Remove receiver.
|
| }
|
|
|
| -
|
| void Builtins::Generate_JSEntryTrampoline(MacroAssembler* masm) {
|
| Generate_JSEntryTrampolineHelper(masm, false);
|
| }
|
|
|
| -
|
| void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
|
| Generate_JSEntryTrampolineHelper(masm, true);
|
| }
|
| @@ -1079,7 +1066,6 @@ void Builtins::Generate_CompileOptimized(MacroAssembler* masm) {
|
| Runtime::kCompileOptimized_NotConcurrent);
|
| }
|
|
|
| -
|
| void Builtins::Generate_CompileOptimizedConcurrent(MacroAssembler* masm) {
|
| GenerateTailCallToReturnedCode(masm, Runtime::kCompileOptimized_Concurrent);
|
| }
|
| @@ -1148,20 +1134,18 @@ static void GenerateMakeCodeYoungAgainCommon(MacroAssembler* masm) {
|
| __ ret(0);
|
| }
|
|
|
| -
|
| -#define DEFINE_CODE_AGE_BUILTIN_GENERATOR(C) \
|
| -void Builtins::Generate_Make##C##CodeYoungAgainEvenMarking( \
|
| - MacroAssembler* masm) { \
|
| - GenerateMakeCodeYoungAgainCommon(masm); \
|
| -} \
|
| -void Builtins::Generate_Make##C##CodeYoungAgainOddMarking( \
|
| - MacroAssembler* masm) { \
|
| - GenerateMakeCodeYoungAgainCommon(masm); \
|
| -}
|
| +#define DEFINE_CODE_AGE_BUILTIN_GENERATOR(C) \
|
| + void Builtins::Generate_Make##C##CodeYoungAgainEvenMarking( \
|
| + MacroAssembler* masm) { \
|
| + GenerateMakeCodeYoungAgainCommon(masm); \
|
| + } \
|
| + void Builtins::Generate_Make##C##CodeYoungAgainOddMarking( \
|
| + MacroAssembler* masm) { \
|
| + GenerateMakeCodeYoungAgainCommon(masm); \
|
| + }
|
| CODE_AGE_LIST(DEFINE_CODE_AGE_BUILTIN_GENERATOR)
|
| #undef DEFINE_CODE_AGE_BUILTIN_GENERATOR
|
|
|
| -
|
| void Builtins::Generate_MarkCodeAsExecutedOnce(MacroAssembler* masm) {
|
| // For now, as in GenerateMakeCodeYoungAgainCommon, we are relying on the fact
|
| // that make_code_young doesn't do any garbage collection which allows us to
|
| @@ -1192,17 +1176,14 @@ void Builtins::Generate_MarkCodeAsExecutedOnce(MacroAssembler* masm) {
|
| __ ret(0);
|
| }
|
|
|
| -
|
| void Builtins::Generate_MarkCodeAsExecutedTwice(MacroAssembler* masm) {
|
| GenerateMakeCodeYoungAgainCommon(masm);
|
| }
|
|
|
| -
|
| void Builtins::Generate_MarkCodeAsToBeExecutedOnce(MacroAssembler* masm) {
|
| Generate_MarkCodeAsExecutedOnce(masm);
|
| }
|
|
|
| -
|
| static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
| SaveFPRegsMode save_doubles) {
|
| // Enter an internal frame.
|
| @@ -1222,17 +1203,14 @@ static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
| __ ret(0); // Return to IC Miss stub, continuation still on stack.
|
| }
|
|
|
| -
|
| void Builtins::Generate_NotifyStubFailure(MacroAssembler* masm) {
|
| Generate_NotifyStubFailureHelper(masm, kDontSaveFPRegs);
|
| }
|
|
|
| -
|
| void Builtins::Generate_NotifyStubFailureSaveDoubles(MacroAssembler* masm) {
|
| Generate_NotifyStubFailureHelper(masm, kSaveFPRegs);
|
| }
|
|
|
| -
|
| static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
| Deoptimizer::BailoutType type) {
|
| // Enter an internal frame.
|
| @@ -1268,22 +1246,18 @@ static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
| __ Abort(kNoCasesLeft);
|
| }
|
|
|
| -
|
| void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
|
| Generate_NotifyDeoptimizedHelper(masm, Deoptimizer::EAGER);
|
| }
|
|
|
| -
|
| void Builtins::Generate_NotifySoftDeoptimized(MacroAssembler* masm) {
|
| Generate_NotifyDeoptimizedHelper(masm, Deoptimizer::SOFT);
|
| }
|
|
|
| -
|
| void Builtins::Generate_NotifyLazyDeoptimized(MacroAssembler* masm) {
|
| Generate_NotifyDeoptimizedHelper(masm, Deoptimizer::LAZY);
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm,
|
| int field_index) {
|
| @@ -1418,7 +1392,6 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_FunctionPrototypeCall(MacroAssembler* masm) {
|
| // Stack Layout:
|
| @@ -1471,7 +1444,6 @@ void Builtins::Generate_FunctionPrototypeCall(MacroAssembler* masm) {
|
| __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET);
|
| }
|
|
|
| -
|
| void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| // -- rax : argc
|
| @@ -1536,7 +1508,6 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| // -- rax : argc
|
| @@ -1618,7 +1589,6 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| void Builtins::Generate_InternalArrayCode(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| // -- rax : argc
|
| @@ -1648,7 +1618,6 @@ void Builtins::Generate_InternalArrayCode(MacroAssembler* masm) {
|
| __ TailCallStub(&stub);
|
| }
|
|
|
| -
|
| void Builtins::Generate_ArrayCode(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| // -- rax : argc
|
| @@ -1836,7 +1805,6 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
| __ ret(1 * kPointerSize);
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -1920,7 +1888,6 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -1994,7 +1961,6 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -2079,7 +2045,6 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| static void ArgumentsAdaptorStackCheck(MacroAssembler* masm,
|
| Label* stack_overflow) {
|
| // ----------- S t a t e -------------
|
| @@ -2106,7 +2071,6 @@ static void ArgumentsAdaptorStackCheck(MacroAssembler* masm,
|
| __ j(less_equal, stack_overflow); // Signed comparison.
|
| }
|
|
|
| -
|
| static void EnterArgumentsAdaptorFrame(MacroAssembler* masm) {
|
| __ pushq(rbp);
|
| __ movp(rbp, rsp);
|
| @@ -2124,7 +2088,6 @@ static void EnterArgumentsAdaptorFrame(MacroAssembler* masm) {
|
| __ Push(r8);
|
| }
|
|
|
| -
|
| static void LeaveArgumentsAdaptorFrame(MacroAssembler* masm) {
|
| // Retrieve the number of arguments from the stack. Number is a Smi.
|
| __ movp(rbx, Operand(rbp, ArgumentsAdaptorFrameConstants::kLengthOffset));
|
| @@ -2345,7 +2308,6 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_Apply(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -2678,7 +2640,6 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
| }
|
| }
|
|
|
| -
|
| namespace {
|
|
|
| void Generate_PushBoundArguments(MacroAssembler* masm) {
|
| @@ -2763,7 +2724,6 @@ void Generate_PushBoundArguments(MacroAssembler* masm) {
|
|
|
| } // namespace
|
|
|
| -
|
| // static
|
| void Builtins::Generate_CallBoundFunctionImpl(MacroAssembler* masm,
|
| TailCallMode tail_call_mode) {
|
| @@ -2793,7 +2753,6 @@ void Builtins::Generate_CallBoundFunctionImpl(MacroAssembler* masm,
|
| __ jmp(rcx);
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode,
|
| TailCallMode tail_call_mode) {
|
| @@ -2857,7 +2816,6 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode,
|
| }
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_ConstructFunction(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -2879,7 +2837,6 @@ void Builtins::Generate_ConstructFunction(MacroAssembler* masm) {
|
| __ jmp(rcx);
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_ConstructBoundFunction(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -2909,7 +2866,6 @@ void Builtins::Generate_ConstructBoundFunction(MacroAssembler* masm) {
|
| __ jmp(rcx);
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_ConstructProxy(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -2930,7 +2886,6 @@ void Builtins::Generate_ConstructProxy(MacroAssembler* masm) {
|
| ExternalReference(Runtime::kJSProxyConstruct, masm->isolate()));
|
| }
|
|
|
| -
|
| // static
|
| void Builtins::Generate_Construct(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| @@ -2983,7 +2938,6 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
| RelocInfo::CODE_TARGET);
|
| }
|
|
|
| -
|
| static void CompatibleReceiverCheck(MacroAssembler* masm, Register receiver,
|
| Register function_template_info,
|
| Register scratch0, Register scratch1,
|
| @@ -3049,7 +3003,6 @@ static void CompatibleReceiverCheck(MacroAssembler* masm, Register receiver,
|
| __ bind(&receiver_check_passed);
|
| }
|
|
|
| -
|
| void Builtins::Generate_HandleFastApiCall(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| // -- rax : number of arguments (not including the receiver)
|
| @@ -3093,7 +3046,6 @@ void Builtins::Generate_HandleFastApiCall(MacroAssembler* masm) {
|
| }
|
| }
|
|
|
| -
|
| void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
| // Lookup the function in the JavaScript frame.
|
| __ movp(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
| @@ -3116,8 +3068,10 @@ void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
| __ movp(rbx, Operand(rax, Code::kDeoptimizationDataOffset - kHeapObjectTag));
|
|
|
| // Load the OSR entrypoint offset from the deoptimization data.
|
| - __ SmiToInteger32(rbx, Operand(rbx, FixedArray::OffsetOfElementAt(
|
| - DeoptimizationInputData::kOsrPcOffsetIndex) - kHeapObjectTag));
|
| + __ SmiToInteger32(
|
| + rbx, Operand(rbx, FixedArray::OffsetOfElementAt(
|
| + DeoptimizationInputData::kOsrPcOffsetIndex) -
|
| + kHeapObjectTag));
|
|
|
| // Compute the target address = code_obj + header_size + osr_offset
|
| __ leap(rax, Operand(rax, rbx, times_1, Code::kHeaderSize - kHeapObjectTag));
|
| @@ -3129,7 +3083,6 @@ void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
| __ ret(0);
|
| }
|
|
|
| -
|
| #undef __
|
|
|
| } // namespace internal
|
|
|