| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index 976b23448df38cc2b902e6222db918263764ebde..a594c6628eb7b075e30e979f8ea903e8fc40d323 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -394,7 +394,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
|
| @@ -543,10 +547,14 @@ void LCodeGen::RegisterEnvironmentForDeoptimization(
|
| // |>------------ 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();
|
|
|