Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(781)

Side by Side Diff: src/hydrogen.cc

Issue 1156323004: Version 4.2.77.21 (cherry-pick) (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@4.2
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/full-codegen.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/hydrogen.h" 5 #include "src/hydrogen.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/v8.h" 9 #include "src/v8.h"
10 10
(...skipping 5533 matching lines...) Expand 10 before | Expand all | Expand 10 after
5544 IsFastLiteral(boilerplate, kMaxFastLiteralDepth, &max_properties)) { 5544 IsFastLiteral(boilerplate, kMaxFastLiteralDepth, &max_properties)) {
5545 AllocationSiteUsageContext usage_context(isolate(), site, false); 5545 AllocationSiteUsageContext usage_context(isolate(), site, false);
5546 usage_context.EnterNewScope(); 5546 usage_context.EnterNewScope();
5547 literal = BuildFastLiteral(boilerplate, &usage_context); 5547 literal = BuildFastLiteral(boilerplate, &usage_context);
5548 usage_context.ExitScope(site, boilerplate); 5548 usage_context.ExitScope(site, boilerplate);
5549 } else { 5549 } else {
5550 NoObservableSideEffectsScope no_effects(this); 5550 NoObservableSideEffectsScope no_effects(this);
5551 Handle<FixedArray> closure_literals(closure->literals(), isolate()); 5551 Handle<FixedArray> closure_literals(closure->literals(), isolate());
5552 Handle<FixedArray> constant_properties = expr->constant_properties(); 5552 Handle<FixedArray> constant_properties = expr->constant_properties();
5553 int literal_index = expr->literal_index(); 5553 int literal_index = expr->literal_index();
5554 int flags = expr->fast_elements() 5554 int flags = expr->ComputeFlags(true);
5555 ? ObjectLiteral::kFastElements : ObjectLiteral::kNoFlags;
5556 flags |= expr->has_function()
5557 ? ObjectLiteral::kHasFunction : ObjectLiteral::kNoFlags;
5558 5555
5559 Add<HPushArguments>(Add<HConstant>(closure_literals), 5556 Add<HPushArguments>(Add<HConstant>(closure_literals),
5560 Add<HConstant>(literal_index), 5557 Add<HConstant>(literal_index),
5561 Add<HConstant>(constant_properties), 5558 Add<HConstant>(constant_properties),
5562 Add<HConstant>(flags)); 5559 Add<HConstant>(flags));
5563 5560
5564 // TODO(mvstanton): Add a flag to turn off creation of any
5565 // AllocationMementos for this call: we are in crankshaft and should have
5566 // learned enough about transition behavior to stop emitting mementos.
5567 Runtime::FunctionId function_id = Runtime::kCreateObjectLiteral; 5561 Runtime::FunctionId function_id = Runtime::kCreateObjectLiteral;
5568 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(), 5562 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
5569 Runtime::FunctionForId(function_id), 5563 Runtime::FunctionForId(function_id),
5570 4); 5564 4);
5571 } 5565 }
5572 5566
5573 // The object is expected in the bailout environment during computation 5567 // The object is expected in the bailout environment during computation
5574 // of the property values and is the value of the entire expression. 5568 // of the property values and is the value of the entire expression.
5575 Push(literal); 5569 Push(literal);
5576 5570
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
5715 AllocationSiteUsageContext usage_context(isolate(), site, false); 5709 AllocationSiteUsageContext usage_context(isolate(), site, false);
5716 usage_context.EnterNewScope(); 5710 usage_context.EnterNewScope();
5717 literal = BuildFastLiteral(boilerplate_object, &usage_context); 5711 literal = BuildFastLiteral(boilerplate_object, &usage_context);
5718 usage_context.ExitScope(site, boilerplate_object); 5712 usage_context.ExitScope(site, boilerplate_object);
5719 } else { 5713 } else {
5720 NoObservableSideEffectsScope no_effects(this); 5714 NoObservableSideEffectsScope no_effects(this);
5721 // Boilerplate already exists and constant elements are never accessed, 5715 // Boilerplate already exists and constant elements are never accessed,
5722 // pass an empty fixed array to the runtime function instead. 5716 // pass an empty fixed array to the runtime function instead.
5723 Handle<FixedArray> constants = isolate()->factory()->empty_fixed_array(); 5717 Handle<FixedArray> constants = isolate()->factory()->empty_fixed_array();
5724 int literal_index = expr->literal_index(); 5718 int literal_index = expr->literal_index();
5725 int flags = expr->depth() == 1 5719 int flags = expr->ComputeFlags(true);
5726 ? ArrayLiteral::kShallowElements
5727 : ArrayLiteral::kNoFlags;
5728 flags |= ArrayLiteral::kDisableMementos;
5729 5720
5730 Add<HPushArguments>(Add<HConstant>(literals), 5721 Add<HPushArguments>(Add<HConstant>(literals),
5731 Add<HConstant>(literal_index), 5722 Add<HConstant>(literal_index),
5732 Add<HConstant>(constants), 5723 Add<HConstant>(constants),
5733 Add<HConstant>(flags)); 5724 Add<HConstant>(flags));
5734 5725
5735 Runtime::FunctionId function_id = Runtime::kCreateArrayLiteral; 5726 Runtime::FunctionId function_id = Runtime::kCreateArrayLiteral;
5736 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(), 5727 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
5737 Runtime::FunctionForId(function_id), 5728 Runtime::FunctionForId(function_id),
5738 4); 5729 4);
(...skipping 7684 matching lines...) Expand 10 before | Expand all | Expand 10 after
13423 if (ShouldProduceTraceOutput()) { 13414 if (ShouldProduceTraceOutput()) {
13424 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13415 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13425 } 13416 }
13426 13417
13427 #ifdef DEBUG 13418 #ifdef DEBUG
13428 graph_->Verify(false); // No full verify. 13419 graph_->Verify(false); // No full verify.
13429 #endif 13420 #endif
13430 } 13421 }
13431 13422
13432 } } // namespace v8::internal 13423 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/full-codegen.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698