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

Side by Side Diff: src/crankshaft/hydrogen.cc

Issue 1471893003: [compiler] No need to push literal index in VisitArrayLiteral. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Comment Created 5 years 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/compiler/ast-graph-builder.cc ('k') | src/full-codegen/arm/full-codegen-arm.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/crankshaft/hydrogen.h" 5 #include "src/crankshaft/hydrogen.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/allocation-site-scopes.h" 9 #include "src/allocation-site-scopes.h"
10 #include "src/ast-numbering.h" 10 #include "src/ast-numbering.h"
(...skipping 6056 matching lines...) Expand 10 before | Expand all | Expand 10 after
6067 Runtime::FunctionId function_id = Runtime::kCreateArrayLiteral; 6067 Runtime::FunctionId function_id = Runtime::kCreateArrayLiteral;
6068 literal = Add<HCallRuntime>(Runtime::FunctionForId(function_id), 4); 6068 literal = Add<HCallRuntime>(Runtime::FunctionForId(function_id), 4);
6069 6069
6070 // Register to deopt if the boilerplate ElementsKind changes. 6070 // Register to deopt if the boilerplate ElementsKind changes.
6071 top_info()->dependencies()->AssumeTransitionStable(site); 6071 top_info()->dependencies()->AssumeTransitionStable(site);
6072 } 6072 }
6073 6073
6074 // The array is expected in the bailout environment during computation 6074 // The array is expected in the bailout environment during computation
6075 // of the property values and is the value of the entire expression. 6075 // of the property values and is the value of the entire expression.
6076 Push(literal); 6076 Push(literal);
6077 // The literal index is on the stack, too.
6078 Push(Add<HConstant>(expr->literal_index()));
6079 6077
6080 HInstruction* elements = NULL; 6078 HInstruction* elements = NULL;
6081 6079
6082 for (int i = 0; i < length; i++) { 6080 for (int i = 0; i < length; i++) {
6083 Expression* subexpr = subexprs->at(i); 6081 Expression* subexpr = subexprs->at(i);
6084 if (subexpr->IsSpread()) { 6082 if (subexpr->IsSpread()) {
6085 return Bailout(kSpread); 6083 return Bailout(kSpread);
6086 } 6084 }
6087 6085
6088 // If the subexpression is a literal or a simple materialized literal it 6086 // If the subexpression is a literal or a simple materialized literal it
(...skipping 21 matching lines...) Expand all
6110 break; 6108 break;
6111 } 6109 }
6112 default: 6110 default:
6113 UNREACHABLE(); 6111 UNREACHABLE();
6114 break; 6112 break;
6115 } 6113 }
6116 6114
6117 Add<HSimulate>(expr->GetIdForElement(i)); 6115 Add<HSimulate>(expr->GetIdForElement(i));
6118 } 6116 }
6119 6117
6120 Drop(1); // array literal index
6121 return ast_context()->ReturnValue(Pop()); 6118 return ast_context()->ReturnValue(Pop());
6122 } 6119 }
6123 6120
6124 6121
6125 HCheckMaps* HOptimizedGraphBuilder::AddCheckMap(HValue* object, 6122 HCheckMaps* HOptimizedGraphBuilder::AddCheckMap(HValue* object,
6126 Handle<Map> map) { 6123 Handle<Map> map) {
6127 BuildCheckHeapObject(object); 6124 BuildCheckHeapObject(object);
6128 return Add<HCheckMaps>(object, map); 6125 return Add<HCheckMaps>(object, map);
6129 } 6126 }
6130 6127
(...skipping 7506 matching lines...) Expand 10 before | Expand all | Expand 10 after
13637 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13634 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13638 } 13635 }
13639 13636
13640 #ifdef DEBUG 13637 #ifdef DEBUG
13641 graph_->Verify(false); // No full verify. 13638 graph_->Verify(false); // No full verify.
13642 #endif 13639 #endif
13643 } 13640 }
13644 13641
13645 } // namespace internal 13642 } // namespace internal
13646 } // namespace v8 13643 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/ast-graph-builder.cc ('k') | src/full-codegen/arm/full-codegen-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698