Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index f6009049b857041222db95a199068d204eeff2a1..5550605cf8191ea0cc64a052c3f9fe622e738009 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -447,10 +447,18 @@ void LCodeGen::WriteTranslation(LEnvironment* environment, |
WriteTranslation(environment->outer(), translation); |
int closure_id = DefineDeoptimizationLiteral(environment->closure()); |
- if (environment->is_arguments_adaptor()) { |
- translation->BeginArgumentsAdaptorFrame(closure_id, translation_size); |
- } else { |
- translation->BeginJSFrame(environment->ast_id(), closure_id, height); |
+ switch (environment->frame_type()) { |
+ case JS_FUNCTION: |
+ translation->BeginJSFrame(environment->ast_id(), closure_id, height); |
+ break; |
+ case JS_CONSTRUCT: |
+ translation->BeginConstructStubFrame(closure_id, translation_size); |
+ break; |
+ case ARGUMENTS_ADAPTOR: |
+ translation->BeginArgumentsAdaptorFrame(closure_id, translation_size); |
+ break; |
+ default: |
+ UNREACHABLE(); |
} |
for (int i = 0; i < translation_size; ++i) { |
LOperand* value = environment->values()->at(i); |
@@ -580,7 +588,7 @@ void LCodeGen::RegisterEnvironmentForDeoptimization(LEnvironment* environment, |
int jsframe_count = 0; |
for (LEnvironment* e = environment; e != NULL; e = e->outer()) { |
++frame_count; |
- if (!e->is_arguments_adaptor()) { |
+ if (e->frame_type() == JS_FUNCTION) { |
++jsframe_count; |
} |
} |