| Index: src/x64/full-codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/full-codegen-x64.cc (revision 6540)
|
| +++ src/x64/full-codegen-x64.cc (working copy)
|
| @@ -1218,7 +1218,13 @@
|
| __ push(FieldOperand(rdi, JSFunction::kLiteralsOffset));
|
| __ Push(Smi::FromInt(expr->literal_index()));
|
| __ Push(expr->constant_properties());
|
| - __ Push(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 {
|
| @@ -1286,6 +1292,12 @@
|
| }
|
| }
|
|
|
| + if (expr->has_function()) {
|
| + ASSERT(result_saved);
|
| + __ push(Operand(esp, 0));
|
| + __ CallRuntime(Runtime::kToFastProperties, 1);
|
| + }
|
| +
|
| if (result_saved) {
|
| context()->PlugTOS();
|
| } else {
|
|
|