| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 6740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6751 Handle<JSObject> boilerplate_object = | 6751 Handle<JSObject> boilerplate_object = |
| 6752 DeepCopy(original_boilerplate_object); | 6752 DeepCopy(original_boilerplate_object); |
| 6753 | 6753 |
| 6754 literal = BuildFastLiteral(context, | 6754 literal = BuildFastLiteral(context, |
| 6755 boilerplate_object, | 6755 boilerplate_object, |
| 6756 original_boilerplate_object, | 6756 original_boilerplate_object, |
| 6757 data_size, | 6757 data_size, |
| 6758 pointer_size, | 6758 pointer_size, |
| 6759 DONT_TRACK_ALLOCATION_SITE); | 6759 DONT_TRACK_ALLOCATION_SITE); |
| 6760 } else { | 6760 } else { |
| 6761 NoObservableSideEffectsScope no_effects(this); |
| 6761 Handle<FixedArray> closure_literals(closure->literals(), isolate()); | 6762 Handle<FixedArray> closure_literals(closure->literals(), isolate()); |
| 6763 Handle<FixedArray> constant_properties = expr->constant_properties(); |
| 6764 int literal_index = expr->literal_index(); |
| 6765 int flags = expr->fast_elements() |
| 6766 ? ObjectLiteral::kFastElements : ObjectLiteral::kNoFlags; |
| 6767 flags |= expr->has_function() |
| 6768 ? ObjectLiteral::kHasFunction : ObjectLiteral::kNoFlags; |
| 6769 |
| 6770 AddInstruction(new(zone()) HPushArgument(AddInstruction( |
| 6771 new(zone()) HConstant(closure_literals, Representation::Tagged())))); |
| 6772 AddInstruction(new(zone()) HPushArgument(AddInstruction( |
| 6773 new(zone()) HConstant(literal_index, Representation::Tagged())))); |
| 6774 AddInstruction(new(zone()) HPushArgument(AddInstruction( |
| 6775 new(zone()) HConstant(constant_properties, Representation::Tagged())))); |
| 6776 AddInstruction(new(zone()) HPushArgument(AddInstruction( |
| 6777 new(zone()) HConstant(flags, Representation::Tagged())))); |
| 6778 |
| 6779 Runtime::FunctionId function_id = |
| 6780 (expr->depth() > 1 || expr->may_store_doubles()) |
| 6781 ? Runtime::kCreateObjectLiteral : Runtime::kCreateObjectLiteralShallow; |
| 6762 literal = AddInstruction( | 6782 literal = AddInstruction( |
| 6763 new(zone()) HObjectLiteral(context, | 6783 new(zone()) HCallRuntime(context, |
| 6764 expr->constant_properties(), | 6784 isolate()->factory()->empty_string(), |
| 6765 closure_literals, | 6785 Runtime::FunctionForId(function_id), |
| 6766 expr->fast_elements(), | 6786 4)); |
| 6767 expr->literal_index(), | |
| 6768 expr->depth(), | |
| 6769 expr->may_store_doubles(), | |
| 6770 expr->has_function())); | |
| 6771 } | 6787 } |
| 6772 | 6788 |
| 6773 // The object is expected in the bailout environment during computation | 6789 // The object is expected in the bailout environment during computation |
| 6774 // of the property values and is the value of the entire expression. | 6790 // of the property values and is the value of the entire expression. |
| 6775 Push(literal); | 6791 Push(literal); |
| 6776 | 6792 |
| 6777 expr->CalculateEmitStore(zone()); | 6793 expr->CalculateEmitStore(zone()); |
| 6778 | 6794 |
| 6779 for (int i = 0; i < expr->properties()->length(); i++) { | 6795 for (int i = 0; i < expr->properties()->length(); i++) { |
| 6780 ObjectLiteral::Property* property = expr->properties()->at(i); | 6796 ObjectLiteral::Property* property = expr->properties()->at(i); |
| (...skipping 5589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12370 } | 12386 } |
| 12371 } | 12387 } |
| 12372 | 12388 |
| 12373 #ifdef DEBUG | 12389 #ifdef DEBUG |
| 12374 if (graph_ != NULL) graph_->Verify(false); // No full verify. | 12390 if (graph_ != NULL) graph_->Verify(false); // No full verify. |
| 12375 if (allocator_ != NULL) allocator_->Verify(); | 12391 if (allocator_ != NULL) allocator_->Verify(); |
| 12376 #endif | 12392 #endif |
| 12377 } | 12393 } |
| 12378 | 12394 |
| 12379 } } // namespace v8::internal | 12395 } } // namespace v8::internal |
| OLD | NEW |