summaryrefslogtreecommitdiff
path: root/deps/v8/src/ia32/deoptimizer-ia32.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/ia32/deoptimizer-ia32.cc')
-rw-r--r--deps/v8/src/ia32/deoptimizer-ia32.cc33
1 files changed, 7 insertions, 26 deletions
diff --git a/deps/v8/src/ia32/deoptimizer-ia32.cc b/deps/v8/src/ia32/deoptimizer-ia32.cc
index a3756ae443..656d3e97c3 100644
--- a/deps/v8/src/ia32/deoptimizer-ia32.cc
+++ b/deps/v8/src/ia32/deoptimizer-ia32.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() {
@@ -240,7 +226,12 @@ void Deoptimizer::TableEntryGenerator::Generate() {
// 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.
@@ -311,19 +302,9 @@ void Deoptimizer::TableEntryGenerator::Generate() {
}
__ pop(eax);
- // 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);
+ __ mov(esp, Operand(eax, Deoptimizer::caller_frame_top_offset()));
- // 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