Index: src/ia32/lithium-codegen-ia32.cc |
=================================================================== |
--- src/ia32/lithium-codegen-ia32.cc (revision 9418) |
+++ src/ia32/lithium-codegen-ia32.cc (working copy) |
@@ -295,6 +295,9 @@ |
for (int i = 0; !is_aborted() && i < deferred_.length(); i++) { |
LDeferredCode* code = deferred_[i]; |
__ bind(code->entry()); |
+ Comment(";;; Deferred code @%d: %s.", |
+ code->instruction_index(), |
+ code->instr()->Mnemonic()); |
code->Generate(); |
__ jmp(code->exit()); |
} |
@@ -1904,9 +1907,8 @@ |
virtual void Generate() { |
codegen()->DoDeferredLInstanceOfKnownGlobal(instr_, &map_check_); |
} |
- |
+ virtual LInstruction* instr() { return instr_; } |
Label* map_check() { return &map_check_; } |
- |
private: |
LInstanceOfKnownGlobal* instr_; |
Label map_check_; |
@@ -2759,6 +2761,7 @@ |
virtual void Generate() { |
codegen()->DoDeferredMathAbsTaggedHeapNumber(instr_); |
} |
+ virtual LInstruction* instr() { return instr_; } |
private: |
LUnaryMathOperation* instr_; |
}; |
@@ -3292,6 +3295,7 @@ |
DeferredStringCharCodeAt(LCodeGen* codegen, LStringCharCodeAt* instr) |
: LDeferredCode(codegen), instr_(instr) { } |
virtual void Generate() { codegen()->DoDeferredStringCharCodeAt(instr_); } |
+ virtual LInstruction* instr() { return instr_; } |
private: |
LStringCharCodeAt* instr_; |
}; |
@@ -3414,6 +3418,7 @@ |
DeferredStringCharFromCode(LCodeGen* codegen, LStringCharFromCode* instr) |
: LDeferredCode(codegen), instr_(instr) { } |
virtual void Generate() { codegen()->DoDeferredStringCharFromCode(instr_); } |
+ virtual LInstruction* instr() { return instr_; } |
private: |
LStringCharFromCode* instr_; |
}; |
@@ -3493,6 +3498,7 @@ |
DeferredNumberTagI(LCodeGen* codegen, LNumberTagI* instr) |
: LDeferredCode(codegen), instr_(instr) { } |
virtual void Generate() { codegen()->DoDeferredNumberTagI(instr_); } |
+ virtual LInstruction* instr() { return instr_; } |
private: |
LNumberTagI* instr_; |
}; |
@@ -3560,6 +3566,7 @@ |
DeferredNumberTagD(LCodeGen* codegen, LNumberTagD* instr) |
: LDeferredCode(codegen), instr_(instr) { } |
virtual void Generate() { codegen()->DoDeferredNumberTagD(instr_); } |
+ virtual LInstruction* instr() { return instr_; } |
private: |
LNumberTagD* instr_; |
}; |
@@ -3661,16 +3668,6 @@ |
} |
-class DeferredTaggedToI: public LDeferredCode { |
- public: |
- DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr) |
- : LDeferredCode(codegen), instr_(instr) { } |
- virtual void Generate() { codegen()->DoDeferredTaggedToI(instr_); } |
- private: |
- LTaggedToI* instr_; |
-}; |
- |
- |
void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) { |
Label done, heap_number; |
Register input_reg = ToRegister(instr->InputAt(0)); |
@@ -3752,6 +3749,16 @@ |
void LCodeGen::DoTaggedToI(LTaggedToI* instr) { |
+ class DeferredTaggedToI: public LDeferredCode { |
+ public: |
+ DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr) |
+ : LDeferredCode(codegen), instr_(instr) { } |
+ virtual void Generate() { codegen()->DoDeferredTaggedToI(instr_); } |
+ virtual LInstruction* instr() { return instr_; } |
+ private: |
+ LTaggedToI* instr_; |
+ }; |
+ |
LOperand* input = instr->InputAt(0); |
ASSERT(input->IsRegister()); |
ASSERT(input->Equals(instr->result())); |
@@ -4385,6 +4392,7 @@ |
DeferredStackCheck(LCodeGen* codegen, LStackCheck* instr) |
: LDeferredCode(codegen), instr_(instr) { } |
virtual void Generate() { codegen()->DoDeferredStackCheck(instr_); } |
+ virtual LInstruction* instr() { return instr_; } |
private: |
LStackCheck* instr_; |
}; |