Index: src/arm/full-codegen-arm.cc |
=================================================================== |
--- src/arm/full-codegen-arm.cc (revision 7281) |
+++ src/arm/full-codegen-arm.cc (working copy) |
@@ -1397,7 +1397,13 @@ |
__ ldr(r3, FieldMemOperand(r3, JSFunction::kLiteralsOffset)); |
__ mov(r2, Operand(Smi::FromInt(expr->literal_index()))); |
__ mov(r1, Operand(expr->constant_properties())); |
- __ mov(r0, Operand(Smi::FromInt(expr->fast_elements() ? 1 : 0))); |
+ int flags = expr->fast_elements() |
+ ? ObjectLiteral::kFastElements |
+ : ObjectLiteral::kNoFlags; |
+ flags |= expr->has_function() |
+ ? ObjectLiteral::kHasFunction |
+ : ObjectLiteral::kNoFlags; |
+ __ mov(r0, Operand(Smi::FromInt(flags))); |
__ Push(r3, r2, r1, r0); |
if (expr->depth() > 1) { |
__ CallRuntime(Runtime::kCreateObjectLiteral, 4); |
@@ -1476,6 +1482,13 @@ |
} |
} |
+ if (expr->has_function()) { |
+ ASSERT(result_saved); |
+ __ ldr(r0, MemOperand(sp)); |
+ __ push(r0); |
+ __ CallRuntime(Runtime::kToFastProperties, 1); |
+ } |
+ |
if (result_saved) { |
context()->PlugTOS(); |
} else { |