diff options
Diffstat (limited to 'src/qml/jit')
-rw-r--r-- | src/qml/jit/qv4assembler.cpp | 10 | ||||
-rw-r--r-- | src/qml/jit/qv4assembler_p.h | 1 | ||||
-rw-r--r-- | src/qml/jit/qv4baselinejit.cpp | 5 | ||||
-rw-r--r-- | src/qml/jit/qv4baselinejit_p.h | 1 |
4 files changed, 17 insertions, 0 deletions
diff --git a/src/qml/jit/qv4assembler.cpp b/src/qml/jit/qv4assembler.cpp index efd226539e..3379d9a0e4 100644 --- a/src/qml/jit/qv4assembler.cpp +++ b/src/qml/jit/qv4assembler.cpp @@ -1509,6 +1509,16 @@ void JIT::Assembler::storeHeapObject(int reg) pasm()->storeHeapObject(PlatformAssembler::ReturnValueRegisterValue, regAddr(reg)); } +void JIT::Assembler::loadImport(int index) +{ + Address addr = pasm()->loadCompilationUnitPtr(PlatformAssembler::ScratchRegister); + addr.offset = offsetof(QV4::CompiledData::CompilationUnitBase, imports); + pasm()->loadPtr(addr, PlatformAssembler::ScratchRegister); + addr.offset = index * int(sizeof(QV4::Value*)); + pasm()->loadPtr(addr, PlatformAssembler::ScratchRegister); + pasm()->loadAccumulator(Address(PlatformAssembler::ScratchRegister)); +} + void Assembler::toNumber() { pasm()->toNumber(); diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h index 2cf59f53ee..1379c72f9a 100644 --- a/src/qml/jit/qv4assembler_p.h +++ b/src/qml/jit/qv4assembler_p.h @@ -97,6 +97,7 @@ public: void loadString(int stringId); void loadValue(ReturnedValue value); void storeHeapObject(int reg); + void loadImport(int index); // numeric ops void unot(); diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp index 7200e44f0c..bf442de741 100644 --- a/src/qml/jit/qv4baselinejit.cpp +++ b/src/qml/jit/qv4baselinejit.cpp @@ -140,6 +140,11 @@ void BaselineJIT::generate_MoveReg(int srcReg, int destReg) as->moveReg(srcReg, destReg); } +void BaselineJIT::generate_LoadImport(int index) +{ + as->loadImport(index); +} + void BaselineJIT::generate_LoadLocal(int index) { as->loadLocal(index); diff --git a/src/qml/jit/qv4baselinejit_p.h b/src/qml/jit/qv4baselinejit_p.h index d96fd6ea6a..71b9dda9b9 100644 --- a/src/qml/jit/qv4baselinejit_p.h +++ b/src/qml/jit/qv4baselinejit_p.h @@ -87,6 +87,7 @@ public: void generate_LoadReg(int reg) override; void generate_StoreReg(int reg) override; void generate_MoveReg(int srcReg, int destReg) override; + void generate_LoadImport(int index) override; void generate_LoadLocal(int index) override; void generate_StoreLocal(int index) override; void generate_LoadScopedLocal(int scope, int index) override; |