| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index ef507b534b3f9b269b6dedbe6256cbb597832624..71c974ea6e8f37f1c6587836b871b377c95e69c3 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -11,6 +11,7 @@
|
| #include "src/code-stubs.h"
|
| #include "src/codegen.h"
|
| #include "src/ic/handler-compiler.h"
|
| +#include "src/ic/ic.h"
|
| #include "src/isolate.h"
|
| #include "src/jsregexp.h"
|
| #include "src/regexp-macro-assembler.h"
|
| @@ -1525,14 +1526,12 @@ static int NegativeComparisonResult(Condition cc) {
|
| }
|
|
|
|
|
| -static void CheckInputType(MacroAssembler* masm,
|
| - Register input,
|
| - CompareIC::State expected,
|
| - Label* fail) {
|
| +static void CheckInputType(MacroAssembler* masm, Register input,
|
| + CompareICState::State expected, Label* fail) {
|
| Label ok;
|
| - if (expected == CompareIC::SMI) {
|
| + if (expected == CompareICState::SMI) {
|
| __ JumpIfNotSmi(input, fail);
|
| - } else if (expected == CompareIC::NUMBER) {
|
| + } else if (expected == CompareICState::NUMBER) {
|
| __ JumpIfSmi(input, &ok);
|
| __ cmp(FieldOperand(input, HeapObject::kMapOffset),
|
| Immediate(masm->isolate()->factory()->heap_number_map()));
|
| @@ -2137,7 +2136,7 @@ void CallIC_ArrayStub::Generate(MacroAssembler* masm) {
|
| __ TailCallStub(&stub);
|
|
|
| __ bind(&miss);
|
| - GenerateMiss(masm, IC::kCallIC_Customization_Miss);
|
| + GenerateMiss(masm);
|
|
|
| // The slow case, we need this no matter what to complete a call after a miss.
|
| CallFunctionNoFeedback(masm,
|
| @@ -2216,7 +2215,7 @@ void CallICStub::Generate(MacroAssembler* masm) {
|
|
|
| // We are here because tracing is on or we are going monomorphic.
|
| __ bind(&miss);
|
| - GenerateMiss(masm, IC::kCallIC_Miss);
|
| + GenerateMiss(masm);
|
|
|
| // the slow case
|
| __ bind(&slow_start);
|
| @@ -2234,7 +2233,7 @@ void CallICStub::Generate(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void CallICStub::GenerateMiss(MacroAssembler* masm, IC::UtilityId id) {
|
| +void CallICStub::GenerateMiss(MacroAssembler* masm) {
|
| // Get the receiver of the function from the stack; 1 ~ return address.
|
| __ mov(ecx, Operand(esp, (arg_count() + 1) * kPointerSize));
|
|
|
| @@ -2248,6 +2247,9 @@ void CallICStub::GenerateMiss(MacroAssembler* masm, IC::UtilityId id) {
|
| __ push(edx);
|
|
|
| // Call the entry.
|
| + IC::UtilityId id = GetICState() == DEFAULT ? IC::kCallIC_Miss
|
| + : IC::kCallIC_Customization_Miss;
|
| +
|
| ExternalReference miss = ExternalReference(IC_Utility(id),
|
| masm->isolate());
|
| __ CallExternalReference(miss, 4);
|
| @@ -3294,7 +3296,7 @@ void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) {
|
|
|
|
|
| void CompareICStub::GenerateSmis(MacroAssembler* masm) {
|
| - DCHECK(state() == CompareIC::SMI);
|
| + DCHECK(state() == CompareICState::SMI);
|
| Label miss;
|
| __ mov(ecx, edx);
|
| __ or_(ecx, eax);
|
| @@ -3320,16 +3322,16 @@ void CompareICStub::GenerateSmis(MacroAssembler* masm) {
|
|
|
|
|
| void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
|
| - DCHECK(state() == CompareIC::NUMBER);
|
| + DCHECK(state() == CompareICState::NUMBER);
|
|
|
| Label generic_stub;
|
| Label unordered, maybe_undefined1, maybe_undefined2;
|
| Label miss;
|
|
|
| - if (left() == CompareIC::SMI) {
|
| + if (left() == CompareICState::SMI) {
|
| __ JumpIfNotSmi(edx, &miss);
|
| }
|
| - if (right() == CompareIC::SMI) {
|
| + if (right() == CompareICState::SMI) {
|
| __ JumpIfNotSmi(eax, &miss);
|
| }
|
|
|
| @@ -3376,8 +3378,8 @@ void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
|
|
|
| __ bind(&unordered);
|
| __ bind(&generic_stub);
|
| - CompareICStub stub(isolate(), op(), CompareIC::GENERIC, CompareIC::GENERIC,
|
| - CompareIC::GENERIC);
|
| + CompareICStub stub(isolate(), op(), CompareICState::GENERIC,
|
| + CompareICState::GENERIC, CompareICState::GENERIC);
|
| __ jmp(stub.GetCode(), RelocInfo::CODE_TARGET);
|
|
|
| __ bind(&maybe_undefined1);
|
| @@ -3402,7 +3404,7 @@ void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
|
|
|
|
|
| void CompareICStub::GenerateInternalizedStrings(MacroAssembler* masm) {
|
| - DCHECK(state() == CompareIC::INTERNALIZED_STRING);
|
| + DCHECK(state() == CompareICState::INTERNALIZED_STRING);
|
| DCHECK(GetCondition() == equal);
|
|
|
| // Registers containing left and right operands respectively.
|
| @@ -3447,7 +3449,7 @@ void CompareICStub::GenerateInternalizedStrings(MacroAssembler* masm) {
|
|
|
|
|
| void CompareICStub::GenerateUniqueNames(MacroAssembler* masm) {
|
| - DCHECK(state() == CompareIC::UNIQUE_NAME);
|
| + DCHECK(state() == CompareICState::UNIQUE_NAME);
|
| DCHECK(GetCondition() == equal);
|
|
|
| // Registers containing left and right operands respectively.
|
| @@ -3492,7 +3494,7 @@ void CompareICStub::GenerateUniqueNames(MacroAssembler* masm) {
|
|
|
|
|
| void CompareICStub::GenerateStrings(MacroAssembler* masm) {
|
| - DCHECK(state() == CompareIC::STRING);
|
| + DCHECK(state() == CompareICState::STRING);
|
| Label miss;
|
|
|
| bool equality = Token::IsEqualityOp(op());
|
| @@ -3582,7 +3584,7 @@ void CompareICStub::GenerateStrings(MacroAssembler* masm) {
|
|
|
|
|
| void CompareICStub::GenerateObjects(MacroAssembler* masm) {
|
| - DCHECK(state() == CompareIC::OBJECT);
|
| + DCHECK(state() == CompareICState::OBJECT);
|
| Label miss;
|
| __ mov(ecx, edx);
|
| __ and_(ecx, eax);
|
|
|