Chromium Code Reviews| Index: src/ia32/full-codegen-ia32.cc |
| =================================================================== |
| --- src/ia32/full-codegen-ia32.cc (revision 6540) |
| +++ src/ia32/full-codegen-ia32.cc (working copy) |
| @@ -1327,7 +1327,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 { |
| @@ -1396,6 +1402,12 @@ |
| } |
| } |
| + if (expr->fast_elements() && expr->has_function()) { |
|
Mads Ager (chromium)
2011/02/01 13:51:00
I'm not sure I understand why fast elements is par
fschneider
2011/02/02 10:18:38
Absolutely right. Done.
|
| + ASSERT(result_saved); |
| + __ push(Operand(esp, 0)); |
| + __ CallRuntime(Runtime::kToFastProperties, 1); |
| + } |
| + |
| if (result_saved) { |
| context()->PlugTOS(); |
| } else { |