Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 6f8989a934cd45396b7d39215a7777a60efb5bbf..9380f190c365701af523d6c6d65cb155d78d1639 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -641,7 +641,7 @@ void FullCodeGenerator::DoTest(Expression* condition, |
Label* if_false, |
Label* fall_through) { |
Handle<Code> ic = ToBooleanStub::GetUninitialized(isolate()); |
- CallIC(ic, NOT_CONTEXTUAL, condition->test_id()); |
+ CallIC(ic, condition->test_id()); |
__ testq(result_register(), result_register()); |
// The stub returns nonzero for true. |
Split(not_zero, if_true, if_false, fall_through); |
@@ -994,7 +994,7 @@ void FullCodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) { |
// Record position before stub call for type feedback. |
SetSourcePosition(clause->position()); |
Handle<Code> ic = CompareIC::GetUninitialized(isolate(), Token::EQ_STRICT); |
- CallIC(ic, NOT_CONTEXTUAL, clause->CompareId()); |
+ CallIC(ic, clause->CompareId()); |
patch_site.EmitPatchInfo(); |
Label skip; |
@@ -1663,7 +1663,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
VisitForAccumulatorValue(value); |
__ Move(rcx, key->value()); |
__ movp(rdx, Operand(rsp, 0)); |
- CallStoreIC(NOT_CONTEXTUAL, key->LiteralFeedbackId()); |
+ CallStoreIC(key->LiteralFeedbackId()); |
PrepareForBailoutForId(key->id(), NO_REGISTERS); |
} else { |
VisitForEffect(value); |
@@ -2078,7 +2078,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
__ movp(rdx, Operand(rsp, kPointerSize)); |
__ movp(rax, Operand(rsp, 2 * kPointerSize)); |
Handle<Code> ic = isolate()->builtins()->KeyedLoadIC_Initialize(); |
- CallIC(ic, NOT_CONTEXTUAL, TypeFeedbackId::None()); |
+ CallIC(ic, TypeFeedbackId::None()); |
__ movp(rdi, rax); |
__ movp(Operand(rsp, 2 * kPointerSize), rdi); |
CallFunctionStub stub(1, CALL_AS_METHOD); |
@@ -2269,7 +2269,7 @@ void FullCodeGenerator::EmitNamedPropertyLoad(Property* prop) { |
void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) { |
SetSourcePosition(prop->position()); |
Handle<Code> ic = isolate()->builtins()->KeyedLoadIC_Initialize(); |
- CallIC(ic, NOT_CONTEXTUAL, prop->PropertyFeedbackId()); |
+ CallIC(ic, prop->PropertyFeedbackId()); |
} |
@@ -2291,8 +2291,7 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr, |
__ bind(&stub_call); |
__ movp(rax, rcx); |
BinaryOpICStub stub(op, mode); |
- CallIC(stub.GetCode(isolate()), NOT_CONTEXTUAL, |
- expr->BinaryOperationFeedbackId()); |
+ CallIC(stub.GetCode(isolate()), expr->BinaryOperationFeedbackId()); |
patch_site.EmitPatchInfo(); |
__ jmp(&done, Label::kNear); |
@@ -2341,8 +2340,7 @@ void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr, |
__ pop(rdx); |
BinaryOpICStub stub(op, mode); |
JumpPatchSite patch_site(masm_); // unbound, signals no inlined smi code. |
- CallIC(stub.GetCode(isolate()), NOT_CONTEXTUAL, |
- expr->BinaryOperationFeedbackId()); |
+ CallIC(stub.GetCode(isolate()), expr->BinaryOperationFeedbackId()); |
patch_site.EmitPatchInfo(); |
context()->Plug(rax); |
} |
@@ -2380,7 +2378,7 @@ void FullCodeGenerator::EmitAssignment(Expression* expr) { |
__ movp(rdx, rax); |
__ pop(rax); // Restore value. |
__ Move(rcx, prop->key()->AsLiteral()->value()); |
- CallStoreIC(NOT_CONTEXTUAL); |
+ CallStoreIC(); |
break; |
} |
case KEYED_PROPERTY: { |
@@ -2407,7 +2405,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, |
// Global var, const, or let. |
__ Move(rcx, var->name()); |
__ movp(rdx, GlobalObjectOperand()); |
- CallStoreIC(CONTEXTUAL); |
+ CallStoreIC(); |
} else if (op == Token::INIT_CONST) { |
// Const initializers need a write barrier. |
ASSERT(!var->IsParameter()); // No const parameters. |
@@ -2498,7 +2496,7 @@ void FullCodeGenerator::EmitNamedPropertyAssignment(Assignment* expr) { |
SetSourcePosition(expr->position()); |
__ Move(rcx, prop->key()->AsLiteral()->value()); |
__ pop(rdx); |
- CallStoreIC(NOT_CONTEXTUAL, expr->AssignmentFeedbackId()); |
+ CallStoreIC(expr->AssignmentFeedbackId()); |
PrepareForBailoutForId(expr->AssignmentId(), TOS_REG); |
context()->Plug(rax); |
@@ -2515,7 +2513,7 @@ void FullCodeGenerator::EmitKeyedPropertyAssignment(Assignment* expr) { |
Handle<Code> ic = is_classic_mode() |
? isolate()->builtins()->KeyedStoreIC_Initialize() |
: isolate()->builtins()->KeyedStoreIC_Initialize_Strict(); |
- CallIC(ic, NOT_CONTEXTUAL, expr->AssignmentFeedbackId()); |
+ CallIC(ic, expr->AssignmentFeedbackId()); |
PrepareForBailoutForId(expr->AssignmentId(), TOS_REG); |
context()->Plug(rax); |
@@ -2542,10 +2540,8 @@ void FullCodeGenerator::VisitProperty(Property* expr) { |
void FullCodeGenerator::CallIC(Handle<Code> code, |
- ContextualMode mode, |
TypeFeedbackId ast_id) { |
ic_total_count_++; |
- ASSERT(mode != CONTEXTUAL || ast_id.IsNone()); |
__ call(code, RelocInfo::CODE_TARGET, ast_id); |
} |
@@ -4414,9 +4410,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
__ movp(rdx, rax); |
__ Move(rax, Smi::FromInt(1)); |
BinaryOpICStub stub(expr->binary_op(), NO_OVERWRITE); |
- CallIC(stub.GetCode(isolate()), |
- NOT_CONTEXTUAL, |
- expr->CountBinOpFeedbackId()); |
+ CallIC(stub.GetCode(isolate()), expr->CountBinOpFeedbackId()); |
patch_site.EmitPatchInfo(); |
__ bind(&done); |
@@ -4447,7 +4441,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
case NAMED_PROPERTY: { |
__ Move(rcx, prop->key()->AsLiteral()->value()); |
__ pop(rdx); |
- CallStoreIC(NOT_CONTEXTUAL, expr->CountStoreFeedbackId()); |
+ CallStoreIC(expr->CountStoreFeedbackId()); |
PrepareForBailoutForId(expr->AssignmentId(), TOS_REG); |
if (expr->is_postfix()) { |
if (!context()->IsEffect()) { |
@@ -4464,7 +4458,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
Handle<Code> ic = is_classic_mode() |
? isolate()->builtins()->KeyedStoreIC_Initialize() |
: isolate()->builtins()->KeyedStoreIC_Initialize_Strict(); |
- CallIC(ic, NOT_CONTEXTUAL, expr->CountStoreFeedbackId()); |
+ CallIC(ic, expr->CountStoreFeedbackId()); |
PrepareForBailoutForId(expr->AssignmentId(), TOS_REG); |
if (expr->is_postfix()) { |
if (!context()->IsEffect()) { |
@@ -4652,7 +4646,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) { |
// Record position and call the compare IC. |
SetSourcePosition(expr->position()); |
Handle<Code> ic = CompareIC::GetUninitialized(isolate(), op); |
- CallIC(ic, NOT_CONTEXTUAL, expr->CompareOperationFeedbackId()); |
+ CallIC(ic, expr->CompareOperationFeedbackId()); |
patch_site.EmitPatchInfo(); |
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); |
@@ -4687,7 +4681,7 @@ void FullCodeGenerator::EmitLiteralCompareNil(CompareOperation* expr, |
Split(equal, if_true, if_false, fall_through); |
} else { |
Handle<Code> ic = CompareNilICStub::GetUninitialized(isolate(), nil); |
- CallIC(ic, NOT_CONTEXTUAL, expr->CompareOperationFeedbackId()); |
+ CallIC(ic, expr->CompareOperationFeedbackId()); |
__ testq(rax, rax); |
Split(not_zero, if_true, if_false, fall_through); |
} |