| 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_;
|
| };
|
|
|