Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 080785725fb09cc8ddb1cd9fa17b3249841be48f..76c8443e7c30cc422154eab202c61dba16e5941e 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -479,7 +479,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 |
@@ -612,10 +616,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(); |