Index: src/crankshaft/lithium-codegen.cc |
diff --git a/src/crankshaft/lithium-codegen.cc b/src/crankshaft/lithium-codegen.cc |
index ff4e78f6a7aab863bb206b0fe847f085549bf6b9..53fedcf1df1d9de4abdd3f19d5f35ed48381d2b3 100644 |
--- a/src/crankshaft/lithium-codegen.cc |
+++ b/src/crankshaft/lithium-codegen.cc |
@@ -240,8 +240,8 @@ void LCodeGenBase::WriteTranslationFrame(LEnvironment* environment, |
break; |
} |
case JS_GETTER: { |
- DCHECK(translation_size == 1); |
- DCHECK(height == 0); |
+ DCHECK_EQ(1, translation_size); |
+ DCHECK_EQ(0, height); |
int shared_id = DefineDeoptimizationLiteral( |
environment->entry() ? environment->entry()->shared() |
: info()->shared_info()); |
@@ -255,8 +255,8 @@ void LCodeGenBase::WriteTranslationFrame(LEnvironment* environment, |
break; |
} |
case JS_SETTER: { |
- DCHECK(translation_size == 2); |
- DCHECK(height == 0); |
+ DCHECK_EQ(2, translation_size); |
+ DCHECK_EQ(0, height); |
int shared_id = DefineDeoptimizationLiteral( |
environment->entry() ? environment->entry()->shared() |
: info()->shared_info()); |
@@ -269,6 +269,20 @@ void LCodeGenBase::WriteTranslationFrame(LEnvironment* environment, |
} |
break; |
} |
+ case TAIL_CALLER_FUNCTION: { |
+ DCHECK_EQ(0, translation_size); |
+ int shared_id = DefineDeoptimizationLiteral( |
+ environment->entry() ? environment->entry()->shared() |
+ : info()->shared_info()); |
+ translation->BeginTailCallerFrame(shared_id); |
+ if (info()->closure().is_identical_to(environment->closure())) { |
+ translation->StoreJSFrameFunction(); |
+ } else { |
+ int closure_id = DefineDeoptimizationLiteral(environment->closure()); |
+ translation->StoreLiteral(closure_id); |
+ } |
+ break; |
+ } |
case ARGUMENTS_ADAPTOR: { |
int shared_id = DefineDeoptimizationLiteral( |
environment->entry() ? environment->entry()->shared() |