Index: src/ia32/full-codegen-ia32.cc |
=================================================================== |
--- src/ia32/full-codegen-ia32.cc (revision 5865) |
+++ src/ia32/full-codegen-ia32.cc (working copy) |
@@ -880,17 +880,23 @@ |
} |
-void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info) { |
+void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info, |
+ bool pretenure) { |
// Use the fast case closure allocation code that allocates in new |
// space for nested functions that don't need literals cloning. |
- if (scope()->is_function_scope() && info->num_literals() == 0) { |
+ if (scope()->is_function_scope() && |
+ info->num_literals() == 0 && |
+ !pretenure) { |
FastNewClosureStub stub; |
__ push(Immediate(info)); |
__ CallStub(&stub); |
} else { |
__ push(esi); |
__ push(Immediate(info)); |
- __ CallRuntime(Runtime::kNewClosure, 2); |
+ __ push(Immediate(pretenure |
+ ? Factory::true_value() |
+ : Factory::false_value())); |
+ __ CallRuntime(Runtime::kNewClosure, 3); |
} |
context()->Plug(eax); |
} |