Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index ae3b71557e7590c961b94c2432c46ed6f4608725..640befc4a63ab60726caa13fedb5b2a83dd7146c 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -5411,7 +5411,8 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) { |
DCHECK(current_block()->HasPredecessor()); |
Variable* variable = expr->var(); |
switch (variable->location()) { |
- case Variable::UNALLOCATED: { |
+ case VariableLocation::GLOBAL: |
+ case VariableLocation::UNALLOCATED: { |
if (IsLexicalVariableMode(variable->mode())) { |
// TODO(rossberg): should this be an DCHECK? |
return Bailout(kReferenceToGlobalLexicalVariable); |
@@ -5517,8 +5518,8 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) { |
} |
} |
- case Variable::PARAMETER: |
- case Variable::LOCAL: { |
+ case VariableLocation::PARAMETER: |
+ case VariableLocation::LOCAL: { |
HValue* value = LookupAndMakeLive(variable); |
if (value == graph()->GetConstantHole()) { |
DCHECK(IsDeclaredVariableMode(variable->mode()) && |
@@ -5528,7 +5529,7 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) { |
return ast_context()->ReturnValue(value); |
} |
- case Variable::CONTEXT: { |
+ case VariableLocation::CONTEXT: { |
HValue* context = BuildContextChainWalk(variable); |
HLoadContextSlot::Mode mode; |
switch (variable->mode()) { |
@@ -5548,7 +5549,7 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) { |
return ast_context()->ReturnInstruction(instr, expr->id()); |
} |
- case Variable::LOOKUP: |
+ case VariableLocation::LOOKUP: |
return Bailout(kReferenceToAVariableWhichRequiresDynamicLookup); |
} |
} |
@@ -6759,14 +6760,15 @@ void HOptimizedGraphBuilder::HandleCompoundAssignment(Assignment* expr) { |
CHECK_ALIVE(VisitForValue(operation)); |
switch (var->location()) { |
- case Variable::UNALLOCATED: |
+ case VariableLocation::GLOBAL: |
+ case VariableLocation::UNALLOCATED: |
HandleGlobalVariableAssignment(var, |
Top(), |
expr->AssignmentId()); |
break; |
- case Variable::PARAMETER: |
- case Variable::LOCAL: |
+ case VariableLocation::PARAMETER: |
+ case VariableLocation::LOCAL: |
if (var->mode() == CONST_LEGACY) { |
return Bailout(kUnsupportedConstCompoundAssignment); |
} |
@@ -6776,7 +6778,7 @@ void HOptimizedGraphBuilder::HandleCompoundAssignment(Assignment* expr) { |
BindIfLive(var, Top()); |
break; |
- case Variable::CONTEXT: { |
+ case VariableLocation::CONTEXT: { |
// Bail out if we try to mutate a parameter value in a function |
// using the arguments object. We do not (yet) correctly handle the |
// arguments property of the function. |
@@ -6815,7 +6817,7 @@ void HOptimizedGraphBuilder::HandleCompoundAssignment(Assignment* expr) { |
break; |
} |
- case Variable::LOOKUP: |
+ case VariableLocation::LOOKUP: |
return Bailout(kCompoundAssignmentToLookupSlot); |
} |
return ast_context()->ReturnValue(Pop()); |
@@ -6885,15 +6887,16 @@ void HOptimizedGraphBuilder::VisitAssignment(Assignment* expr) { |
// Handle the assignment. |
switch (var->location()) { |
- case Variable::UNALLOCATED: |
+ case VariableLocation::GLOBAL: |
+ case VariableLocation::UNALLOCATED: |
CHECK_ALIVE(VisitForValue(expr->value())); |
HandleGlobalVariableAssignment(var, |
Top(), |
expr->AssignmentId()); |
return ast_context()->ReturnValue(Pop()); |
- case Variable::PARAMETER: |
- case Variable::LOCAL: { |
+ case VariableLocation::PARAMETER: |
+ case VariableLocation::LOCAL: { |
// Perform an initialization check for let declared variables |
// or parameters. |
if (var->mode() == LET && expr->op() == Token::ASSIGN) { |
@@ -6911,7 +6914,7 @@ void HOptimizedGraphBuilder::VisitAssignment(Assignment* expr) { |
return ast_context()->ReturnValue(value); |
} |
- case Variable::CONTEXT: { |
+ case VariableLocation::CONTEXT: { |
// Bail out if we try to mutate a parameter value in a function using |
// the arguments object. We do not (yet) correctly handle the |
// arguments property of the function. |
@@ -6961,7 +6964,7 @@ void HOptimizedGraphBuilder::VisitAssignment(Assignment* expr) { |
return ast_context()->ReturnValue(Pop()); |
} |
- case Variable::LOOKUP: |
+ case VariableLocation::LOOKUP: |
return Bailout(kAssignmentToLOOKUPVariable); |
} |
} else { |
@@ -10218,7 +10221,7 @@ void HOptimizedGraphBuilder::VisitDelete(UnaryOperation* expr) { |
return ast_context()->ReturnInstruction(instr, expr->id()); |
} else if (proxy != NULL) { |
Variable* var = proxy->var(); |
- if (var->IsUnallocated()) { |
+ if (var->IsUnallocatedOrGlobalSlot()) { |
Bailout(kDeleteWithGlobalVariable); |
} else if (var->IsStackAllocated() || var->IsContextSlot()) { |
// Result of deleting non-global variables is false. 'this' is not really |
@@ -10404,18 +10407,19 @@ void HOptimizedGraphBuilder::VisitCountOperation(CountOperation* expr) { |
Push(after); |
switch (var->location()) { |
- case Variable::UNALLOCATED: |
+ case VariableLocation::GLOBAL: |
+ case VariableLocation::UNALLOCATED: |
HandleGlobalVariableAssignment(var, |
after, |
expr->AssignmentId()); |
break; |
- case Variable::PARAMETER: |
- case Variable::LOCAL: |
+ case VariableLocation::PARAMETER: |
+ case VariableLocation::LOCAL: |
BindIfLive(var, after); |
break; |
- case Variable::CONTEXT: { |
+ case VariableLocation::CONTEXT: { |
// Bail out if we try to mutate a parameter value in a function |
// using the arguments object. We do not (yet) correctly handle the |
// arguments property of the function. |
@@ -10442,7 +10446,7 @@ void HOptimizedGraphBuilder::VisitCountOperation(CountOperation* expr) { |
break; |
} |
- case Variable::LOOKUP: |
+ case VariableLocation::LOOKUP: |
return Bailout(kLookupVariableInCountOperation); |
} |
@@ -11664,20 +11668,21 @@ void HOptimizedGraphBuilder::VisitVariableDeclaration( |
Variable* variable = proxy->var(); |
bool hole_init = mode == LET || mode == CONST || mode == CONST_LEGACY; |
switch (variable->location()) { |
- case Variable::UNALLOCATED: |
+ case VariableLocation::GLOBAL: |
+ case VariableLocation::UNALLOCATED: |
globals_.Add(variable->name(), zone()); |
globals_.Add(variable->binding_needs_init() |
? isolate()->factory()->the_hole_value() |
: isolate()->factory()->undefined_value(), zone()); |
return; |
- case Variable::PARAMETER: |
- case Variable::LOCAL: |
+ case VariableLocation::PARAMETER: |
+ case VariableLocation::LOCAL: |
if (hole_init) { |
HValue* value = graph()->GetConstantHole(); |
environment()->Bind(variable, value); |
} |
break; |
- case Variable::CONTEXT: |
+ case VariableLocation::CONTEXT: |
if (hole_init) { |
HValue* value = graph()->GetConstantHole(); |
HValue* context = environment()->context(); |
@@ -11688,7 +11693,7 @@ void HOptimizedGraphBuilder::VisitVariableDeclaration( |
} |
} |
break; |
- case Variable::LOOKUP: |
+ case VariableLocation::LOOKUP: |
return Bailout(kUnsupportedLookupSlotInDeclaration); |
} |
} |
@@ -11699,7 +11704,8 @@ void HOptimizedGraphBuilder::VisitFunctionDeclaration( |
VariableProxy* proxy = declaration->proxy(); |
Variable* variable = proxy->var(); |
switch (variable->location()) { |
- case Variable::UNALLOCATED: { |
+ case VariableLocation::GLOBAL: |
+ case VariableLocation::UNALLOCATED: { |
globals_.Add(variable->name(), zone()); |
Handle<SharedFunctionInfo> function = Compiler::GetSharedFunctionInfo( |
declaration->fun(), current_info()->script(), top_info()); |
@@ -11708,14 +11714,14 @@ void HOptimizedGraphBuilder::VisitFunctionDeclaration( |
globals_.Add(function, zone()); |
return; |
} |
- case Variable::PARAMETER: |
- case Variable::LOCAL: { |
+ case VariableLocation::PARAMETER: |
+ case VariableLocation::LOCAL: { |
CHECK_ALIVE(VisitForValue(declaration->fun())); |
HValue* value = Pop(); |
BindIfLive(variable, value); |
break; |
} |
- case Variable::CONTEXT: { |
+ case VariableLocation::CONTEXT: { |
CHECK_ALIVE(VisitForValue(declaration->fun())); |
HValue* value = Pop(); |
HValue* context = environment()->context(); |
@@ -11726,7 +11732,7 @@ void HOptimizedGraphBuilder::VisitFunctionDeclaration( |
} |
break; |
} |
- case Variable::LOOKUP: |
+ case VariableLocation::LOOKUP: |
return Bailout(kUnsupportedLookupSlotInDeclaration); |
} |
} |