From 69f3deff73759a006bafa7d5595cde01d0738dde Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 24 Aug 2017 10:41:36 +0200 Subject: Change offsets to be integer based This is big enough for generated bytecode, and gives more uniform sizing in our instructions (everything's an int), that will simplify moving over to a compressed instruction stream. Change-Id: Ieb13c5db84348f11c3297c08dca640bb9ec5f224 Reviewed-by: Simon Hausmann --- src/qml/compiler/qv4bytecodegenerator.cpp | 4 ++-- src/qml/compiler/qv4instr_moth_p.h | 36 +++++++++++++++---------------- 2 files changed, 20 insertions(+), 20 deletions(-) (limited to 'src/qml') diff --git a/src/qml/compiler/qv4bytecodegenerator.cpp b/src/qml/compiler/qv4bytecodegenerator.cpp index cae984a253..3c28f6a719 100644 --- a/src/qml/compiler/qv4bytecodegenerator.cpp +++ b/src/qml/compiler/qv4bytecodegenerator.cpp @@ -97,9 +97,9 @@ void BytecodeGenerator::finalize(Compiler::Context *context) int offset = instructionOffsets.at(j.instructionIndex) + j.offset; // qDebug() << "offset data is at" << offset; char *c = code.data() + offset; - ptrdiff_t linkedInstructionOffset = instructionOffsets.at(linkedInstruction) - offset; + int linkedInstructionOffset = instructionOffsets.at(linkedInstruction) - offset; // qDebug() << "linked instruction" << linkedInstruction << "at " << instructionOffsets.at(linkedInstruction); - memcpy(c, &linkedInstructionOffset, sizeof(ptrdiff_t)); + memcpy(c, &linkedInstructionOffset, sizeof(int)); } context->code = code; diff --git a/src/qml/compiler/qv4instr_moth_p.h b/src/qml/compiler/qv4instr_moth_p.h index 588ee7c110..9ca69c3eed 100644 --- a/src/qml/compiler/qv4instr_moth_p.h +++ b/src/qml/compiler/qv4instr_moth_p.h @@ -446,7 +446,7 @@ union Instr }; struct instr_setExceptionHandler { MOTH_INSTR_HEADER - qptrdiff offset; + int offset; }; struct instr_throwException { MOTH_INSTR_HEADER @@ -533,83 +533,83 @@ union Instr }; struct instr_jump { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; }; struct instr_jumpEq { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; }; struct instr_jumpNe { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpEqNull { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpNeNull { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpEqInt { MOTH_INSTR_HEADER int lhs; - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpNeInt { MOTH_INSTR_HEADER int lhs; - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpEq { MOTH_INSTR_HEADER StackSlot lhs; - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpNe { MOTH_INSTR_HEADER StackSlot lhs; - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpGt { MOTH_INSTR_HEADER StackSlot lhs; - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpGe { MOTH_INSTR_HEADER StackSlot lhs; - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpLt { MOTH_INSTR_HEADER StackSlot lhs; - ptrdiff_t offset; + int offset; }; struct instr_cmpJmpLe { MOTH_INSTR_HEADER StackSlot lhs; - ptrdiff_t offset; + int offset; }; struct instr_jumpStrictEqual { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; StackSlot lhs; }; struct instr_jumpStrictNotEqual { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; StackSlot lhs; }; struct instr_jumpStrictEqualStackSlotInt { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; StackSlot lhs; int rhs; }; struct instr_jumpStrictNotEqualStackSlotInt { MOTH_INSTR_HEADER - ptrdiff_t offset; + int offset; StackSlot lhs; int rhs; }; -- cgit v1.2.3