Index: src/ia32/full-codegen-ia32.cc |
=================================================================== |
--- src/ia32/full-codegen-ia32.cc (revision 7281) |
+++ src/ia32/full-codegen-ia32.cc (working copy) |
@@ -1343,7 +1343,13 @@ |
__ push(FieldOperand(edi, JSFunction::kLiteralsOffset)); |
__ push(Immediate(Smi::FromInt(expr->literal_index()))); |
__ push(Immediate(expr->constant_properties())); |
- __ push(Immediate(Smi::FromInt(expr->fast_elements() ? 1 : 0))); |
+ int flags = expr->fast_elements() |
+ ? ObjectLiteral::kFastElements |
+ : ObjectLiteral::kNoFlags; |
+ flags |= expr->has_function() |
+ ? ObjectLiteral::kHasFunction |
+ : ObjectLiteral::kNoFlags; |
+ __ push(Immediate(Smi::FromInt(flags))); |
if (expr->depth() > 1) { |
__ CallRuntime(Runtime::kCreateObjectLiteral, 4); |
} else { |
@@ -1415,6 +1421,12 @@ |
} |
} |
+ if (expr->has_function()) { |
+ ASSERT(result_saved); |
+ __ push(Operand(esp, 0)); |
+ __ CallRuntime(Runtime::kToFastProperties, 1); |
+ } |
+ |
if (result_saved) { |
context()->PlugTOS(); |
} else { |