| Index: src/x64/codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/codegen-x64.cc (revision 3774)
|
| +++ src/x64/codegen-x64.cc (working copy)
|
| @@ -7332,21 +7332,6 @@
|
| }
|
|
|
|
|
| -int CEntryStub::MinorKey() {
|
| - ASSERT(result_size_ <= 2);
|
| -#ifdef _WIN64
|
| - // Simple results returned in rax (using default code).
|
| - // Complex results must be written to address passed as first argument.
|
| - return (result_size_ < 2) ? 0 : 1;
|
| -#else
|
| - // Single results returned in rax (both AMD64 and Win64 calling conventions)
|
| - // and a struct of two pointers in rax+rdx (AMD64 calling convention only)
|
| - // by default.
|
| - return 0;
|
| -#endif
|
| -}
|
| -
|
| -
|
| void CEntryStub::GenerateThrowTOS(MacroAssembler* masm) {
|
| // Check that stack should contain next handler, frame pointer, state and
|
| // return address in that order.
|
| @@ -7380,7 +7365,6 @@
|
| Label* throw_normal_exception,
|
| Label* throw_termination_exception,
|
| Label* throw_out_of_memory_exception,
|
| - ExitFrame::Mode mode,
|
| bool do_gc,
|
| bool always_allocate_scope) {
|
| // rax: result parameter for PerformGC, if any.
|
| @@ -7392,6 +7376,10 @@
|
| // This pointer is reused in LeaveExitFrame(), so it is stored in a
|
| // callee-saved register.
|
|
|
| + // Simple results returned in rax (both AMD64 and Win64 calling conventions).
|
| + // Complex results must be written to address passed as first argument.
|
| + // AMD64 calling convention: a struct of two pointers in rax+rdx
|
| +
|
| if (do_gc) {
|
| // Pass failure code returned from last attempt as first argument to GC.
|
| #ifdef _WIN64
|
| @@ -7463,7 +7451,7 @@
|
| __ j(zero, &failure_returned);
|
|
|
| // Exit the JavaScript to C++ exit frame.
|
| - __ LeaveExitFrame(mode, result_size_);
|
| + __ LeaveExitFrame(mode_, result_size_);
|
| __ ret(0);
|
|
|
| // Handling of failure.
|
| @@ -7607,7 +7595,7 @@
|
| }
|
|
|
|
|
| -void CEntryStub::GenerateBody(MacroAssembler* masm, bool is_debug_break) {
|
| +void CEntryStub::Generate(MacroAssembler* masm) {
|
| // rax: number of arguments including receiver
|
| // rbx: pointer to C function (C callee-saved)
|
| // rbp: frame pointer of calling JS frame (restored after C call)
|
| @@ -7619,12 +7607,8 @@
|
| // this by performing a garbage collection and retrying the
|
| // builtin once.
|
|
|
| - ExitFrame::Mode mode = is_debug_break ?
|
| - ExitFrame::MODE_DEBUG :
|
| - ExitFrame::MODE_NORMAL;
|
| -
|
| // Enter the exit frame that transitions from JavaScript to C++.
|
| - __ EnterExitFrame(mode, result_size_);
|
| + __ EnterExitFrame(mode_, result_size_);
|
|
|
| // rax: Holds the context at this point, but should not be used.
|
| // On entry to code generated by GenerateCore, it must hold
|
| @@ -7647,7 +7631,6 @@
|
| &throw_normal_exception,
|
| &throw_termination_exception,
|
| &throw_out_of_memory_exception,
|
| - mode,
|
| false,
|
| false);
|
|
|
| @@ -7656,7 +7639,6 @@
|
| &throw_normal_exception,
|
| &throw_termination_exception,
|
| &throw_out_of_memory_exception,
|
| - mode,
|
| true,
|
| false);
|
|
|
| @@ -7667,7 +7649,6 @@
|
| &throw_normal_exception,
|
| &throw_termination_exception,
|
| &throw_out_of_memory_exception,
|
| - mode,
|
| true,
|
| true);
|
|
|
|
|