diff options
Diffstat (limited to 'deps/v8/src/x87/deoptimizer-x87.cc')
-rw-r--r-- | deps/v8/src/x87/deoptimizer-x87.cc | 34 |
1 files changed, 7 insertions, 27 deletions
diff --git a/deps/v8/src/x87/deoptimizer-x87.cc b/deps/v8/src/x87/deoptimizer-x87.cc index 3b90276a93..9d4645e782 100644 --- a/deps/v8/src/x87/deoptimizer-x87.cc +++ b/deps/v8/src/x87/deoptimizer-x87.cc @@ -186,20 +186,6 @@ void Deoptimizer::CopyDoubleRegisters(FrameDescription* output_frame) { } } -bool Deoptimizer::HasAlignmentPadding(SharedFunctionInfo* shared) { - int parameter_count = shared->internal_formal_parameter_count() + 1; - unsigned input_frame_size = input_->GetFrameSize(); - unsigned alignment_state_offset = - input_frame_size - parameter_count * kPointerSize - - StandardFrameConstants::kFixedFrameSize - - kPointerSize; - DCHECK(JavaScriptFrameConstants::kDynamicAlignmentStateOffset == - JavaScriptFrameConstants::kLocal0Offset); - int32_t alignment_state = input_->GetFrameSlot(alignment_state_offset); - return (alignment_state == kAlignmentPaddingPushed); -} - - #define __ masm()-> void Deoptimizer::TableEntryGenerator::Generate() { @@ -260,7 +246,12 @@ void Deoptimizer::TableEntryGenerator::Generate() { __ push(edi); // Allocate a new deoptimizer object. __ PrepareCallCFunction(6, eax); + __ mov(eax, Immediate(0)); + Label context_check; + __ mov(edi, Operand(ebp, CommonFrameConstants::kContextOrFrameTypeOffset)); + __ JumpIfSmi(edi, &context_check); __ mov(eax, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); + __ bind(&context_check); __ mov(Operand(esp, 0 * kPointerSize), eax); // Function. __ mov(Operand(esp, 1 * kPointerSize), Immediate(type())); // Bailout type. __ mov(Operand(esp, 2 * kPointerSize), ebx); // Bailout id. @@ -336,20 +327,9 @@ void Deoptimizer::TableEntryGenerator::Generate() { } __ pop(eax); __ pop(edi); + __ mov(esp, Operand(eax, Deoptimizer::caller_frame_top_offset())); - // If frame was dynamically aligned, pop padding. - Label no_padding; - __ cmp(Operand(eax, Deoptimizer::has_alignment_padding_offset()), - Immediate(0)); - __ j(equal, &no_padding); - __ pop(ecx); - if (FLAG_debug_code) { - __ cmp(ecx, Immediate(kAlignmentZapValue)); - __ Assert(equal, kAlignmentMarkerExpected); - } - __ bind(&no_padding); - - // Replace the current frame with the output frames. + // Replace the current (input) frame with the output frames. Label outer_push_loop, inner_push_loop, outer_loop_header, inner_loop_header; // Outer loop state: eax = current FrameDescription**, edx = one past the |