Index: src/ia32/codegen-ia32.cc |
diff --git a/src/ia32/codegen-ia32.cc b/src/ia32/codegen-ia32.cc |
index bde2f18449d5036fa6a97392af820196d26916f0..9c8573cea0ca1ce76f5c2ec97a412a71ca83397c 100644 |
--- a/src/ia32/codegen-ia32.cc |
+++ b/src/ia32/codegen-ia32.cc |
@@ -249,7 +249,7 @@ void CodeGenerator::Generate(CompilationInfo* info) { |
// the function. |
for (int i = 0; i < scope()->num_parameters(); i++) { |
Variable* par = scope()->parameter(i); |
- Slot* slot = par->slot(); |
+ Slot* slot = par->AsSlot(); |
if (slot != NULL && slot->type() == Slot::CONTEXT) { |
// The use of SlotOperand below is safe in unspilled code |
// because the slot is guaranteed to be a context slot. |
@@ -285,7 +285,7 @@ void CodeGenerator::Generate(CompilationInfo* info) { |
// Initialize ThisFunction reference if present. |
if (scope()->is_function_scope() && scope()->function() != NULL) { |
frame_->Push(Factory::the_hole_value()); |
- StoreToSlot(scope()->function()->slot(), NOT_CONST_INIT); |
+ StoreToSlot(scope()->function()->AsSlot(), NOT_CONST_INIT); |
} |
@@ -717,10 +717,10 @@ void CodeGenerator::LoadTypeofExpression(Expression* expr) { |
Property property(&global, &key, RelocInfo::kNoPosition); |
Reference ref(this, &property); |
ref.GetValue(); |
- } else if (variable != NULL && variable->slot() != NULL) { |
+ } else if (variable != NULL && variable->AsSlot() != NULL) { |
// For a variable that rewrites to a slot, we signal it is the immediate |
// subexpression of a typeof. |
- LoadFromSlotCheckForArguments(variable->slot(), INSIDE_TYPEOF); |
+ LoadFromSlotCheckForArguments(variable->AsSlot(), INSIDE_TYPEOF); |
} else { |
// Anything else can be handled normally. |
Load(expr); |
@@ -759,17 +759,17 @@ Result CodeGenerator::StoreArgumentsObject(bool initial) { |
frame_->Push(&result); |
} |
- Variable* arguments = scope()->arguments()->var(); |
- Variable* shadow = scope()->arguments_shadow()->var(); |
- ASSERT(arguments != NULL && arguments->slot() != NULL); |
- ASSERT(shadow != NULL && shadow->slot() != NULL); |
+ Variable* arguments = scope()->arguments(); |
+ Variable* shadow = scope()->arguments_shadow(); |
+ ASSERT(arguments != NULL && arguments->AsSlot() != NULL); |
+ ASSERT(shadow != NULL && shadow->AsSlot() != NULL); |
JumpTarget done; |
bool skip_arguments = false; |
if (mode == LAZY_ARGUMENTS_ALLOCATION && !initial) { |
// We have to skip storing into the arguments slot if it has |
// already been written to. This can happen if the a function |
// has a local variable named 'arguments'. |
- LoadFromSlot(arguments->slot(), NOT_INSIDE_TYPEOF); |
+ LoadFromSlot(arguments->AsSlot(), NOT_INSIDE_TYPEOF); |
Result probe = frame_->Pop(); |
if (probe.is_constant()) { |
// We have to skip updating the arguments object if it has |
@@ -782,10 +782,10 @@ Result CodeGenerator::StoreArgumentsObject(bool initial) { |
} |
} |
if (!skip_arguments) { |
- StoreToSlot(arguments->slot(), NOT_CONST_INIT); |
+ StoreToSlot(arguments->AsSlot(), NOT_CONST_INIT); |
if (mode == LAZY_ARGUMENTS_ALLOCATION) done.Bind(); |
} |
- StoreToSlot(shadow->slot(), NOT_CONST_INIT); |
+ StoreToSlot(shadow->AsSlot(), NOT_CONST_INIT); |
return frame_->Pop(); |
} |
@@ -842,7 +842,7 @@ void CodeGenerator::LoadReference(Reference* ref) { |
LoadGlobal(); |
ref->set_type(Reference::NAMED); |
} else { |
- ASSERT(var->slot() != NULL); |
+ ASSERT(var->AsSlot() != NULL); |
ref->set_type(Reference::SLOT); |
} |
} else { |
@@ -3274,7 +3274,7 @@ void CodeGenerator::CallApplyLazy(Expression* applicand, |
// Load the receiver and the existing arguments object onto the |
// expression stack. Avoid allocating the arguments object here. |
Load(receiver); |
- LoadFromSlot(scope()->arguments()->var()->slot(), NOT_INSIDE_TYPEOF); |
+ LoadFromSlot(scope()->arguments()->AsSlot(), NOT_INSIDE_TYPEOF); |
// Emit the source position information after having loaded the |
// receiver and the arguments. |
@@ -3536,7 +3536,7 @@ void CodeGenerator::VisitDeclaration(Declaration* node) { |
Comment cmnt(masm_, "[ Declaration"); |
Variable* var = node->proxy()->var(); |
ASSERT(var != NULL); // must have been resolved |
- Slot* slot = var->slot(); |
+ Slot* slot = var->AsSlot(); |
// If it was not possible to allocate the variable at compile time, |
// we need to "declare" it at runtime to make sure it actually |
@@ -4252,7 +4252,7 @@ void CodeGenerator::VisitForStatement(ForStatement* node) { |
// the bottom check of the loop condition. |
if (node->is_fast_smi_loop()) { |
// Set number type of the loop variable to smi. |
- SetTypeForStackSlot(node->loop_variable()->slot(), TypeInfo::Smi()); |
+ SetTypeForStackSlot(node->loop_variable()->AsSlot(), TypeInfo::Smi()); |
} |
Visit(node->body()); |
@@ -4278,7 +4278,7 @@ void CodeGenerator::VisitForStatement(ForStatement* node) { |
// expression if we are in a fast smi loop condition. |
if (node->is_fast_smi_loop() && has_valid_frame()) { |
// Set number type of the loop variable to smi. |
- SetTypeForStackSlot(node->loop_variable()->slot(), TypeInfo::Smi()); |
+ SetTypeForStackSlot(node->loop_variable()->AsSlot(), TypeInfo::Smi()); |
} |
// Based on the condition analysis, compile the backward jump as |
@@ -4577,8 +4577,8 @@ void CodeGenerator::VisitTryCatchStatement(TryCatchStatement* node) { |
// Store the caught exception in the catch variable. |
Variable* catch_var = node->catch_var()->var(); |
- ASSERT(catch_var != NULL && catch_var->slot() != NULL); |
- StoreToSlot(catch_var->slot(), NOT_CONST_INIT); |
+ ASSERT(catch_var != NULL && catch_var->AsSlot() != NULL); |
+ StoreToSlot(catch_var->AsSlot(), NOT_CONST_INIT); |
// Remove the exception from the stack. |
frame_->Drop(); |
@@ -5173,7 +5173,7 @@ void CodeGenerator::EmitDynamicLoadFromSlotFastCase(Slot* slot, |
done->Jump(result); |
} 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. |
@@ -5206,7 +5206,7 @@ void CodeGenerator::EmitDynamicLoadFromSlotFastCase(Slot* slot, |
Result arguments = allocator()->Allocate(); |
ASSERT(arguments.is_valid()); |
__ mov(arguments.reg(), |
- ContextSlotOperandCheckExtensions(obj_proxy->var()->slot(), |
+ ContextSlotOperandCheckExtensions(obj_proxy->var()->AsSlot(), |
arguments, |
slow)); |
frame_->Push(&arguments); |
@@ -5714,7 +5714,7 @@ void CodeGenerator::EmitSlotAssignment(Assignment* node) { |
Comment cmnt(masm(), "[ Variable Assignment"); |
Variable* var = node->target()->AsVariableProxy()->AsVariable(); |
ASSERT(var != NULL); |
- Slot* slot = var->slot(); |
+ Slot* slot = var->AsSlot(); |
ASSERT(slot != NULL); |
// Evaluate the right-hand side. |
@@ -6063,14 +6063,14 @@ void CodeGenerator::VisitCall(Call* node) { |
// in generated code. If we succeed, there is no need to perform a |
// context lookup in the runtime system. |
JumpTarget done; |
- if (var->slot() != NULL && var->mode() == Variable::DYNAMIC_GLOBAL) { |
- ASSERT(var->slot()->type() == Slot::LOOKUP); |
+ if (var->AsSlot() != NULL && var->mode() == Variable::DYNAMIC_GLOBAL) { |
+ ASSERT(var->AsSlot()->type() == Slot::LOOKUP); |
JumpTarget slow; |
// Prepare the stack for the call to |
// ResolvePossiblyDirectEvalNoLookup by pushing the loaded |
// function, the first argument to the eval call and the |
// receiver. |
- Result fun = LoadFromGlobalSlotCheckExtensions(var->slot(), |
+ Result fun = LoadFromGlobalSlotCheckExtensions(var->AsSlot(), |
NOT_INSIDE_TYPEOF, |
&slow); |
frame_->Push(&fun); |
@@ -6153,8 +6153,8 @@ void CodeGenerator::VisitCall(Call* node) { |
frame_->RestoreContextRegister(); |
frame_->Push(&result); |
- } else if (var != NULL && var->slot() != NULL && |
- var->slot()->type() == Slot::LOOKUP) { |
+ } else if (var != NULL && var->AsSlot() != NULL && |
+ var->AsSlot()->type() == Slot::LOOKUP) { |
// ---------------------------------- |
// JavaScript examples: |
// |
@@ -6173,7 +6173,7 @@ void CodeGenerator::VisitCall(Call* node) { |
// Generate fast case for loading functions from slots that |
// correspond to local/global variables or arguments unless they |
// are shadowed by eval-introduced bindings. |
- EmitDynamicLoadFromSlotFastCase(var->slot(), |
+ EmitDynamicLoadFromSlotFastCase(var->AsSlot(), |
NOT_INSIDE_TYPEOF, |
&function, |
&slow, |
@@ -8053,7 +8053,7 @@ void CodeGenerator::VisitUnaryOperation(UnaryOperation* node) { |
Variable* variable = node->expression()->AsVariableProxy()->AsVariable(); |
if (variable != NULL) { |
- Slot* slot = variable->slot(); |
+ Slot* slot = variable->AsSlot(); |
if (variable->is_global()) { |
LoadGlobal(); |
frame_->Push(variable->name()); |
@@ -9787,7 +9787,7 @@ void Reference::GetValue() { |
switch (type_) { |
case SLOT: { |
Comment cmnt(masm, "[ Load from Slot"); |
- Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot(); |
+ Slot* slot = expression_->AsVariableProxy()->AsVariable()->AsSlot(); |
ASSERT(slot != NULL); |
cgen_->LoadFromSlotCheckForArguments(slot, NOT_INSIDE_TYPEOF); |
if (!persist_after_get_) set_unloaded(); |
@@ -9832,7 +9832,7 @@ void Reference::TakeValue() { |
return; |
} |
- Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot(); |
+ Slot* slot = expression_->AsVariableProxy()->AsVariable()->AsSlot(); |
ASSERT(slot != NULL); |
if (slot->type() == Slot::LOOKUP || |
slot->type() == Slot::CONTEXT || |
@@ -9865,7 +9865,7 @@ void Reference::SetValue(InitState init_state) { |
switch (type_) { |
case SLOT: { |
Comment cmnt(masm, "[ Store to Slot"); |
- Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot(); |
+ Slot* slot = expression_->AsVariableProxy()->AsVariable()->AsSlot(); |
ASSERT(slot != NULL); |
cgen_->StoreToSlot(slot, init_state); |
set_unloaded(); |