diff options
-rw-r--r-- | src/qml/compiler/qv4bytecodehandler_p.h | 2 | ||||
-rw-r--r-- | src/qml/jit/qv4baselinejit.cpp | 33 | ||||
-rw-r--r-- | src/qml/jit/qv4baselinejit_p.h | 4 |
3 files changed, 28 insertions, 11 deletions
diff --git a/src/qml/compiler/qv4bytecodehandler_p.h b/src/qml/compiler/qv4bytecodehandler_p.h index 10626ddb74..797d25b8d0 100644 --- a/src/qml/compiler/qv4bytecodehandler_p.h +++ b/src/qml/compiler/qv4bytecodehandler_p.h @@ -99,6 +99,8 @@ public: int currentInstructionOffset() const { return _currentOffset; } int nextInstructionOffset() const { return _nextOffset; } + int absoluteOffset(int relativeOffset) const + { return nextInstructionOffset() + relativeOffset; } protected: FOR_EACH_MOTH_INSTR(BYTECODE_HANDLER_DEFINE_VIRTUAL_BYTECODE_HANDLER) diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp index df3af1fce3..8de0259509 100644 --- a/src/qml/jit/qv4baselinejit.cpp +++ b/src/qml/jit/qv4baselinejit.cpp @@ -593,7 +593,7 @@ void BaselineJIT::generate_ConstructWithSpread(int func, int argc, int argv) void BaselineJIT::generate_SetUnwindHandler(int offset) { if (offset) - labels.insert(as->setUnwindHandler(absoluteOffsetForJump(offset))); + labels.insert(as->setUnwindHandler(absoluteOffset(offset))); else as->clearUnwindHandler(); } @@ -605,7 +605,7 @@ void BaselineJIT::generate_UnwindDispatch() void BaselineJIT::generate_UnwindToLabel(int level, int offset) { - labels.insert(as->unwindToLabel(level, absoluteOffsetForJump(offset))); + labels.insert(as->unwindToLabel(level, absoluteOffset(offset))); } void BaselineJIT::generate_DeadTemporalZoneCheck(int name) @@ -872,11 +872,30 @@ void BaselineJIT::generate_ToObject() } -void BaselineJIT::generate_Jump(int offset) { labels.insert(as->jump(absoluteOffsetForJump(offset))); } -void BaselineJIT::generate_JumpTrue(int /*traceSlot*/, int offset) { labels.insert(as->jumpTrue(absoluteOffsetForJump(offset))); } -void BaselineJIT::generate_JumpFalse(int /*traceSlot*/, int offset) { labels.insert(as->jumpFalse(absoluteOffsetForJump(offset))); } -void BaselineJIT::generate_JumpNoException(int offset) { labels.insert(as->jumpNoException(absoluteOffsetForJump(offset))); } -void BaselineJIT::generate_JumpNotUndefined(int offset) { labels.insert(as->jumpNotUndefined(absoluteOffsetForJump(offset))); } +void BaselineJIT::generate_Jump(int offset) +{ + labels.insert(as->jump(absoluteOffset(offset))); +} + +void BaselineJIT::generate_JumpTrue(int /*traceSlot*/, int offset) +{ + labels.insert(as->jumpTrue(absoluteOffset(offset))); +} + +void BaselineJIT::generate_JumpFalse(int /*traceSlot*/, int offset) +{ + labels.insert(as->jumpFalse(absoluteOffset(offset))); +} + +void BaselineJIT::generate_JumpNoException(int offset) +{ + labels.insert(as->jumpNoException(absoluteOffset(offset))); +} + +void BaselineJIT::generate_JumpNotUndefined(int offset) +{ + labels.insert(as->jumpNotUndefined(absoluteOffset(offset))); +} void BaselineJIT::generate_CmpEqNull() { as->cmpeqNull(); } void BaselineJIT::generate_CmpNeNull() { as->cmpneNull(); } diff --git a/src/qml/jit/qv4baselinejit_p.h b/src/qml/jit/qv4baselinejit_p.h index 385fbf72f3..998f9f110b 100644 --- a/src/qml/jit/qv4baselinejit_p.h +++ b/src/qml/jit/qv4baselinejit_p.h @@ -220,10 +220,6 @@ public: void startInstruction(Moth::Instr::Type instr) override; void endInstruction(Moth::Instr::Type instr) override; -protected: - int absoluteOffsetForJump(int relativeOffset) const - { return nextInstructionOffset() + relativeOffset; } - private: QV4::Function *function; QScopedPointer<BaselineAssembler> as; |