| Index: src/x64/full-codegen-x64.cc
|
| diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc
|
| index ae277b3feef9583f9a0ba6631d046faef73da9f9..e8c50a7aad77af85f7f5b2482e18addfd771387a 100644
|
| --- a/src/x64/full-codegen-x64.cc
|
| +++ b/src/x64/full-codegen-x64.cc
|
| @@ -1379,10 +1379,7 @@ void FullCodeGenerator::EmitLoadGlobalCheckExtensions(VariableProxy* proxy,
|
| Smi::FromInt(proxy->VariableFeedbackSlot()));
|
| }
|
|
|
| - ContextualMode mode = (typeof_state == INSIDE_TYPEOF)
|
| - ? NOT_CONTEXTUAL
|
| - : CONTEXTUAL;
|
| - CallLoadIC(mode);
|
| + CallLoadIC(typeof_state);
|
| }
|
|
|
|
|
| @@ -1464,7 +1461,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
| __ Move(LoadIC::SlotRegister(),
|
| Smi::FromInt(proxy->VariableFeedbackSlot()));
|
| }
|
| - CallLoadIC(CONTEXTUAL);
|
| + CallLoadIC(NOT_INSIDE_TYPEOF);
|
| context()->Plug(rax);
|
| break;
|
| }
|
| @@ -2087,7 +2084,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
| if (FLAG_vector_ics) {
|
| __ Move(LoadIC::SlotRegister(), Smi::FromInt(expr->DoneFeedbackSlot()));
|
| }
|
| - CallLoadIC(NOT_CONTEXTUAL); // rax=result.done
|
| + CallLoadIC(); // rax=result.done
|
| Handle<Code> bool_ic = ToBooleanStub::GetUninitialized(isolate());
|
| CallIC(bool_ic);
|
| __ testp(result_register(), result_register());
|
| @@ -2100,7 +2097,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
| __ Move(LoadIC::SlotRegister(),
|
| Smi::FromInt(expr->ValueFeedbackSlot()));
|
| }
|
| - CallLoadIC(NOT_CONTEXTUAL); // result.value in rax
|
| + CallLoadIC(); // result.value in rax
|
| context()->DropAndPlug(2, rax); // drop iter and g
|
| break;
|
| }
|
| @@ -2263,9 +2260,9 @@ void FullCodeGenerator::EmitNamedPropertyLoad(Property* prop) {
|
| __ Move(LoadIC::NameRegister(), key->value());
|
| if (FLAG_vector_ics) {
|
| __ Move(LoadIC::SlotRegister(), Smi::FromInt(prop->PropertyFeedbackSlot()));
|
| - CallLoadIC(NOT_CONTEXTUAL);
|
| + CallLoadIC(INSIDE_TYPEOF);
|
| } else {
|
| - CallLoadIC(NOT_CONTEXTUAL, prop->PropertyFeedbackId());
|
| + CallLoadIC(INSIDE_TYPEOF, prop->PropertyFeedbackId());
|
| }
|
| }
|
|
|
| @@ -4070,9 +4067,9 @@ void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) {
|
| if (FLAG_vector_ics) {
|
| __ Move(LoadIC::SlotRegister(),
|
| Smi::FromInt(expr->CallRuntimeFeedbackSlot()));
|
| - CallLoadIC(NOT_CONTEXTUAL);
|
| + CallLoadIC(INSIDE_TYPEOF);
|
| } else {
|
| - CallLoadIC(NOT_CONTEXTUAL, expr->CallRuntimeFeedbackId());
|
| + CallLoadIC(INSIDE_TYPEOF, expr->CallRuntimeFeedbackId());
|
| }
|
|
|
| // Push the target function under the receiver.
|
| @@ -4418,9 +4415,8 @@ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
| __ Move(LoadIC::SlotRegister(),
|
| Smi::FromInt(proxy->VariableFeedbackSlot()));
|
| }
|
| - // Use a regular load, not a contextual load, to avoid a reference
|
| - // error.
|
| - CallLoadIC(NOT_CONTEXTUAL);
|
| + // We don't want a reference error if the load fails on the global object.
|
| + CallLoadIC();
|
| PrepareForBailout(expr, TOS_REG);
|
| context()->Plug(rax);
|
| } else if (proxy != NULL && proxy->var()->IsLookupSlot()) {
|
|
|