summaryrefslogtreecommitdiff
path: root/deps/v8/src/x87/deoptimizer-x87.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/x87/deoptimizer-x87.cc')
-rw-r--r--deps/v8/src/x87/deoptimizer-x87.cc34
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