Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 311e7667f59d0c8f5e6e63911aabfd374c211227..c15860c7d9ed7dfc911f0f1ff4192b9527b28ce3 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -100,7 +100,7 @@ void FullCodeGenerator::Generate(CompilationInfo* info) { |
// Copy any necessary parameters into the context. |
int num_parameters = scope()->num_parameters(); |
for (int i = 0; i < num_parameters; i++) { |
- Slot* slot = scope()->parameter(i)->slot(); |
+ Slot* slot = scope()->parameter(i)->AsSlot(); |
if (slot != NULL && slot->type() == Slot::CONTEXT) { |
int parameter_offset = StandardFrameConstants::kCallerSPOffset + |
(num_parameters - 1 - i) * kPointerSize; |
@@ -119,7 +119,7 @@ void FullCodeGenerator::Generate(CompilationInfo* info) { |
} |
// Possibly allocate an arguments object. |
- Variable* arguments = scope()->arguments()->AsVariable(); |
+ Variable* arguments = scope()->arguments(); |
if (arguments != NULL) { |
// Arguments object must be allocated after the context object, in |
// case the "arguments" or ".arguments" variables are in the context. |
@@ -143,9 +143,8 @@ void FullCodeGenerator::Generate(CompilationInfo* info) { |
__ CallStub(&stub); |
// Store new arguments object in both "arguments" and ".arguments" slots. |
__ movq(rcx, rax); |
- Move(arguments->slot(), rax, rbx, rdx); |
- Slot* dot_arguments_slot = |
- scope()->arguments_shadow()->AsVariable()->slot(); |
+ Move(arguments->AsSlot(), rax, rbx, rdx); |
+ Slot* dot_arguments_slot = scope()->arguments_shadow()->AsSlot(); |
Move(dot_arguments_slot, rcx, rbx, rdx); |
} |
@@ -519,7 +518,7 @@ void FullCodeGenerator::EmitDeclaration(Variable* variable, |
FunctionLiteral* function) { |
Comment cmnt(masm_, "[ Declaration"); |
ASSERT(variable != NULL); // Must have been resolved. |
- Slot* slot = variable->slot(); |
+ Slot* slot = variable->AsSlot(); |
Property* prop = variable->AsProperty(); |
if (slot != NULL) { |
@@ -960,7 +959,7 @@ void FullCodeGenerator::EmitDynamicLoadFromSlotFastCase( |
EmitLoadGlobalSlotCheckExtensions(slot, typeof_state, slow); |
__ jmp(done); |
} else if (slot->var()->mode() == Variable::DYNAMIC_LOCAL) { |
- Slot* potential_slot = slot->var()->local_if_not_shadowed()->slot(); |
+ Slot* potential_slot = slot->var()->local_if_not_shadowed()->AsSlot(); |
Expression* rewrite = slot->var()->local_if_not_shadowed()->rewrite(); |
if (potential_slot != NULL) { |
// Generate fast case for locals that rewrite to slots. |
@@ -986,7 +985,7 @@ void FullCodeGenerator::EmitDynamicLoadFromSlotFastCase( |
// variables. Then load the argument from the arguments |
// object using keyed load. |
__ movq(rdx, |
- ContextSlotOperandCheckExtensions(obj_proxy->var()->slot(), |
+ ContextSlotOperandCheckExtensions(obj_proxy->var()->AsSlot(), |
slow)); |
__ Move(rax, key_literal->handle()); |
Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize)); |
@@ -1003,7 +1002,7 @@ void FullCodeGenerator::EmitVariableLoad(Variable* var) { |
// Four cases: non-this global variables, lookup slots, all other |
// types of slots, and parameters that rewrite to explicit property |
// accesses on the arguments object. |
- Slot* slot = var->slot(); |
+ Slot* slot = var->AsSlot(); |
Property* property = var->AsProperty(); |
if (var->is_global() && !var->is_this()) { |
@@ -1059,7 +1058,7 @@ void FullCodeGenerator::EmitVariableLoad(Variable* var) { |
// Assert that the object is in a slot. |
Variable* object_var = property->obj()->AsVariableProxy()->AsVariable(); |
ASSERT_NOT_NULL(object_var); |
- Slot* object_slot = object_var->slot(); |
+ Slot* object_slot = object_var->AsSlot(); |
ASSERT_NOT_NULL(object_slot); |
// Load the object. |
@@ -1531,7 +1530,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, |
// Left-hand sides that rewrite to explicit property accesses do not reach |
// here. |
ASSERT(var != NULL); |
- ASSERT(var->is_global() || var->slot() != NULL); |
+ ASSERT(var->is_global() || var->AsSlot() != NULL); |
if (var->is_global()) { |
ASSERT(!var->is_this()); |
@@ -1547,7 +1546,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, |
// Perform the assignment for non-const variables and for initialization |
// of const variables. Const assignments are simply skipped. |
Label done; |
- Slot* slot = var->slot(); |
+ Slot* slot = var->AsSlot(); |
switch (slot->type()) { |
case Slot::PARAMETER: |
case Slot::LOCAL: |
@@ -1813,14 +1812,14 @@ void FullCodeGenerator::VisitCall(Call* expr) { |
// Push global object as receiver for the call IC lookup. |
__ push(CodeGenerator::GlobalObject()); |
EmitCallWithIC(expr, var->name(), RelocInfo::CODE_TARGET_CONTEXT); |
- } else if (var != NULL && var->slot() != NULL && |
- var->slot()->type() == Slot::LOOKUP) { |
+ } else if (var != NULL && var->AsSlot() != NULL && |
+ var->AsSlot()->type() == Slot::LOOKUP) { |
// Call to a lookup slot (dynamically introduced variable). |
Label slow, done; |
// Generate code for loading from variables potentially shadowed |
// by eval-introduced variables. |
- EmitDynamicLoadFromSlotFastCase(var->slot(), |
+ EmitDynamicLoadFromSlotFastCase(var->AsSlot(), |
NOT_INSIDE_TYPEOF, |
&slow, |
&done); |
@@ -2806,8 +2805,8 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) { |
context()->Plug(true); |
} else if (var != NULL && |
!var->is_global() && |
- var->slot() != NULL && |
- var->slot()->type() != Slot::LOOKUP) { |
+ var->AsSlot() != NULL && |
+ var->AsSlot()->type() != Slot::LOOKUP) { |
// Result of deleting non-global, non-dynamic variables is false. |
// The subexpression does not have side effects. |
context()->Plug(false); |
@@ -3096,13 +3095,13 @@ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) { |
EmitCallIC(ic, RelocInfo::CODE_TARGET); |
context()->Plug(rax); |
} else if (proxy != NULL && |
- proxy->var()->slot() != NULL && |
- proxy->var()->slot()->type() == Slot::LOOKUP) { |
+ proxy->var()->AsSlot() != NULL && |
+ proxy->var()->AsSlot()->type() == Slot::LOOKUP) { |
Label done, slow; |
// Generate code for loading from variables potentially shadowed |
// by eval-introduced variables. |
- Slot* slot = proxy->var()->slot(); |
+ Slot* slot = proxy->var()->AsSlot(); |
EmitDynamicLoadFromSlotFastCase(slot, INSIDE_TYPEOF, &slow, &done); |
__ bind(&slow); |