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 2199283002: [modules] Introduce new VariableLocation for module imports/exports. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase. Created 4 years, 4 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/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 <memory> 7 #include <memory>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/allocation-site-scopes.h" 10 #include "src/allocation-site-scopes.h"
(...skipping 5747 matching lines...) Expand 10 before | Expand all | Expand 10 after
5758 mode = HLoadContextSlot::kNoCheck; 5758 mode = HLoadContextSlot::kNoCheck;
5759 break; 5759 break;
5760 } 5760 }
5761 HLoadContextSlot* instr = 5761 HLoadContextSlot* instr =
5762 new(zone()) HLoadContextSlot(context, variable->index(), mode); 5762 new(zone()) HLoadContextSlot(context, variable->index(), mode);
5763 return ast_context()->ReturnInstruction(instr, expr->id()); 5763 return ast_context()->ReturnInstruction(instr, expr->id());
5764 } 5764 }
5765 5765
5766 case VariableLocation::LOOKUP: 5766 case VariableLocation::LOOKUP:
5767 return Bailout(kReferenceToAVariableWhichRequiresDynamicLookup); 5767 return Bailout(kReferenceToAVariableWhichRequiresDynamicLookup);
5768
5769 case VariableLocation::MODULE:
5770 UNREACHABLE();
5768 } 5771 }
5769 } 5772 }
5770 5773
5771 5774
5772 void HOptimizedGraphBuilder::VisitLiteral(Literal* expr) { 5775 void HOptimizedGraphBuilder::VisitLiteral(Literal* expr) {
5773 DCHECK(!HasStackOverflow()); 5776 DCHECK(!HasStackOverflow());
5774 DCHECK(current_block() != NULL); 5777 DCHECK(current_block() != NULL);
5775 DCHECK(current_block()->HasPredecessor()); 5778 DCHECK(current_block()->HasPredecessor());
5776 HConstant* instr = New<HConstant>(expr->value()); 5779 HConstant* instr = New<HConstant>(expr->value());
5777 return ast_context()->ReturnInstruction(instr, expr->id()); 5780 return ast_context()->ReturnInstruction(instr, expr->id());
(...skipping 1222 matching lines...) Expand 10 before | Expand all | Expand 10 after
7000 HStoreContextSlot* instr = Add<HStoreContextSlot>( 7003 HStoreContextSlot* instr = Add<HStoreContextSlot>(
7001 context, var->index(), mode, Top()); 7004 context, var->index(), mode, Top());
7002 if (instr->HasObservableSideEffects()) { 7005 if (instr->HasObservableSideEffects()) {
7003 Add<HSimulate>(expr->AssignmentId(), REMOVABLE_SIMULATE); 7006 Add<HSimulate>(expr->AssignmentId(), REMOVABLE_SIMULATE);
7004 } 7007 }
7005 break; 7008 break;
7006 } 7009 }
7007 7010
7008 case VariableLocation::LOOKUP: 7011 case VariableLocation::LOOKUP:
7009 return Bailout(kCompoundAssignmentToLookupSlot); 7012 return Bailout(kCompoundAssignmentToLookupSlot);
7013
7014 case VariableLocation::MODULE:
7015 UNREACHABLE();
7010 } 7016 }
7011 return ast_context()->ReturnValue(Pop()); 7017 return ast_context()->ReturnValue(Pop());
7012 7018
7013 } else if (prop != NULL) { 7019 } else if (prop != NULL) {
7014 CHECK_ALIVE(VisitForValue(prop->obj())); 7020 CHECK_ALIVE(VisitForValue(prop->obj()));
7015 HValue* object = Top(); 7021 HValue* object = Top();
7016 HValue* key = NULL; 7022 HValue* key = NULL;
7017 if (!prop->key()->IsPropertyName() || prop->IsStringAccess()) { 7023 if (!prop->key()->IsPropertyName() || prop->IsStringAccess()) {
7018 CHECK_ALIVE(VisitForValue(prop->key())); 7024 CHECK_ALIVE(VisitForValue(prop->key()));
7019 key = Top(); 7025 key = Top();
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
7148 HStoreContextSlot* instr = Add<HStoreContextSlot>( 7154 HStoreContextSlot* instr = Add<HStoreContextSlot>(
7149 context, var->index(), mode, Top()); 7155 context, var->index(), mode, Top());
7150 if (instr->HasObservableSideEffects()) { 7156 if (instr->HasObservableSideEffects()) {
7151 Add<HSimulate>(expr->AssignmentId(), REMOVABLE_SIMULATE); 7157 Add<HSimulate>(expr->AssignmentId(), REMOVABLE_SIMULATE);
7152 } 7158 }
7153 return ast_context()->ReturnValue(Pop()); 7159 return ast_context()->ReturnValue(Pop());
7154 } 7160 }
7155 7161
7156 case VariableLocation::LOOKUP: 7162 case VariableLocation::LOOKUP:
7157 return Bailout(kAssignmentToLOOKUPVariable); 7163 return Bailout(kAssignmentToLOOKUPVariable);
7164
7165 case VariableLocation::MODULE:
7166 UNREACHABLE();
7158 } 7167 }
7159 } else { 7168 } else {
7160 return Bailout(kInvalidLeftHandSideInAssignment); 7169 return Bailout(kInvalidLeftHandSideInAssignment);
7161 } 7170 }
7162 } 7171 }
7163 7172
7164 7173
7165 void HOptimizedGraphBuilder::VisitYield(Yield* expr) { 7174 void HOptimizedGraphBuilder::VisitYield(Yield* expr) {
7166 // Generators are not optimized, so we should never get here. 7175 // Generators are not optimized, so we should never get here.
7167 UNREACHABLE(); 7176 UNREACHABLE();
(...skipping 3626 matching lines...) Expand 10 before | Expand all | Expand 10 after
10794 HStoreContextSlot* instr = Add<HStoreContextSlot>(context, var->index(), 10803 HStoreContextSlot* instr = Add<HStoreContextSlot>(context, var->index(),
10795 mode, after); 10804 mode, after);
10796 if (instr->HasObservableSideEffects()) { 10805 if (instr->HasObservableSideEffects()) {
10797 Add<HSimulate>(expr->AssignmentId(), REMOVABLE_SIMULATE); 10806 Add<HSimulate>(expr->AssignmentId(), REMOVABLE_SIMULATE);
10798 } 10807 }
10799 break; 10808 break;
10800 } 10809 }
10801 10810
10802 case VariableLocation::LOOKUP: 10811 case VariableLocation::LOOKUP:
10803 return Bailout(kLookupVariableInCountOperation); 10812 return Bailout(kLookupVariableInCountOperation);
10813
10814 case VariableLocation::MODULE:
10815 UNREACHABLE();
10804 } 10816 }
10805 10817
10806 Drop(returns_original_input ? 2 : 1); 10818 Drop(returns_original_input ? 2 : 1);
10807 return ast_context()->ReturnValue(expr->is_postfix() ? input : after); 10819 return ast_context()->ReturnValue(expr->is_postfix() ? input : after);
10808 } 10820 }
10809 10821
10810 // Argument of the count operation is a property. 10822 // Argument of the count operation is a property.
10811 DCHECK(prop != NULL); 10823 DCHECK(prop != NULL);
10812 if (returns_original_input) Push(graph()->GetConstantUndefined()); 10824 if (returns_original_input) Push(graph()->GetConstantUndefined());
10813 10825
(...skipping 1371 matching lines...) Expand 10 before | Expand all | Expand 10 after
12185 HValue* context = environment()->context(); 12197 HValue* context = environment()->context();
12186 HStoreContextSlot* store = Add<HStoreContextSlot>( 12198 HStoreContextSlot* store = Add<HStoreContextSlot>(
12187 context, variable->index(), HStoreContextSlot::kNoCheck, value); 12199 context, variable->index(), HStoreContextSlot::kNoCheck, value);
12188 if (store->HasObservableSideEffects()) { 12200 if (store->HasObservableSideEffects()) {
12189 Add<HSimulate>(proxy->id(), REMOVABLE_SIMULATE); 12201 Add<HSimulate>(proxy->id(), REMOVABLE_SIMULATE);
12190 } 12202 }
12191 } 12203 }
12192 break; 12204 break;
12193 case VariableLocation::LOOKUP: 12205 case VariableLocation::LOOKUP:
12194 return Bailout(kUnsupportedLookupSlotInDeclaration); 12206 return Bailout(kUnsupportedLookupSlotInDeclaration);
12207 case VariableLocation::MODULE:
12208 UNREACHABLE();
12195 } 12209 }
12196 } 12210 }
12197 12211
12198 12212
12199 void HOptimizedGraphBuilder::VisitFunctionDeclaration( 12213 void HOptimizedGraphBuilder::VisitFunctionDeclaration(
12200 FunctionDeclaration* declaration) { 12214 FunctionDeclaration* declaration) {
12201 VariableProxy* proxy = declaration->proxy(); 12215 VariableProxy* proxy = declaration->proxy();
12202 Variable* variable = proxy->var(); 12216 Variable* variable = proxy->var();
12203 switch (variable->location()) { 12217 switch (variable->location()) {
12204 case VariableLocation::GLOBAL: 12218 case VariableLocation::GLOBAL:
(...skipping 21 matching lines...) Expand all
12226 HValue* context = environment()->context(); 12240 HValue* context = environment()->context();
12227 HStoreContextSlot* store = Add<HStoreContextSlot>( 12241 HStoreContextSlot* store = Add<HStoreContextSlot>(
12228 context, variable->index(), HStoreContextSlot::kNoCheck, value); 12242 context, variable->index(), HStoreContextSlot::kNoCheck, value);
12229 if (store->HasObservableSideEffects()) { 12243 if (store->HasObservableSideEffects()) {
12230 Add<HSimulate>(proxy->id(), REMOVABLE_SIMULATE); 12244 Add<HSimulate>(proxy->id(), REMOVABLE_SIMULATE);
12231 } 12245 }
12232 break; 12246 break;
12233 } 12247 }
12234 case VariableLocation::LOOKUP: 12248 case VariableLocation::LOOKUP:
12235 return Bailout(kUnsupportedLookupSlotInDeclaration); 12249 return Bailout(kUnsupportedLookupSlotInDeclaration);
12250 case VariableLocation::MODULE:
12251 UNREACHABLE();
12236 } 12252 }
12237 } 12253 }
12238 12254
12239 12255
12240 void HOptimizedGraphBuilder::VisitRewritableExpression( 12256 void HOptimizedGraphBuilder::VisitRewritableExpression(
12241 RewritableExpression* node) { 12257 RewritableExpression* node) {
12242 CHECK_ALIVE(Visit(node->expression())); 12258 CHECK_ALIVE(Visit(node->expression()));
12243 } 12259 }
12244 12260
12245 12261
(...skipping 1171 matching lines...) Expand 10 before | Expand all | Expand 10 after
13417 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13433 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13418 } 13434 }
13419 13435
13420 #ifdef DEBUG 13436 #ifdef DEBUG
13421 graph_->Verify(false); // No full verify. 13437 graph_->Verify(false); // No full verify.
13422 #endif 13438 #endif
13423 } 13439 }
13424 13440
13425 } // namespace internal 13441 } // namespace internal
13426 } // namespace v8 13442 } // 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