Index: src/compiler.cc |
=================================================================== |
--- src/compiler.cc (revision 3220) |
+++ src/compiler.cc (working copy) |
@@ -585,6 +585,21 @@ |
CodeGenSelector::CodeGenTag CodeGenSelector::Select(FunctionLiteral* fun) { |
Scope* scope = fun->scope(); |
+ |
+ if (scope->num_heap_slots() > 0) { |
+ // We support functions with a local context if they do not have |
+ // parameters that need to be copied into the context. |
+ for (int i = 0, len = scope->num_parameters(); i < len; i++) { |
+ Slot* slot = scope->parameter(i)->slot(); |
+ if (slot != NULL && slot->type() == Slot::CONTEXT) { |
+ if (FLAG_trace_bailout) { |
+ PrintF("function has context-allocated parameters"); |
+ } |
+ return NORMAL; |
+ } |
+ } |
+ } |
+ |
if (scope->num_heap_slots() != 0) { |
if (FLAG_trace_bailout) PrintF("function has context slots\n"); |
return NORMAL; |