Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index 7a230c1fac6d71c1924c989b4afe7383644e1612..e886c4a79eff68ef16e917b2b6e27d8ed27a55d7 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -447,7 +447,11 @@ void LCodeGen::WriteTranslation(LEnvironment* environment, |
WriteTranslation(environment->outer(), translation); |
int closure_id = DefineDeoptimizationLiteral(environment->closure()); |
- translation->BeginFrame(environment->ast_id(), closure_id, height); |
+ if (environment->is_arguments_adaptor()) { |
+ translation->BeginArgumentsAdaptorFrame(closure_id, translation_size); |
+ } else { |
+ translation->BeginJSFrame(environment->ast_id(), closure_id, height); |
+ } |
for (int i = 0; i < translation_size; ++i) { |
LOperand* value = environment->values()->at(i); |
// spilled_registers_ and spilled_double_registers_ are either |
@@ -573,10 +577,14 @@ void LCodeGen::RegisterEnvironmentForDeoptimization(LEnvironment* environment, |
// |>------------ translation_size ------------<| |
int frame_count = 0; |
+ int jsframe_count = 0; |
for (LEnvironment* e = environment; e != NULL; e = e->outer()) { |
++frame_count; |
+ if (!e->is_arguments_adaptor()) { |
+ ++jsframe_count; |
+ } |
} |
- Translation translation(&translations_, frame_count); |
+ Translation translation(&translations_, frame_count, jsframe_count); |
WriteTranslation(environment, &translation); |
int deoptimization_index = deoptimizations_.length(); |
int pc_offset = masm()->pc_offset(); |