diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-19 22:44:14 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-20 05:55:25 +0200 |
commit | 3ef88c539ff63d9cb33af71f44653b328f36d0db (patch) | |
tree | 207bd2f78b4d9614bd10f1949d27d9c711786d81 /src/qml/compiler | |
parent | 8ed38c70fd29680f7981d9d23581d46cf32139d0 (diff) |
Use a handwritten offsetof macro
clang complains about our usage of offsetof(). What we do is not
strictly c++98 compliant, but compliant with c++11. So replace
the default offsetof with a handwritten macro to shut up clang
until we can switch to c++11 mode for all compilers.
Change-Id: Id724adb323ba9724ad5d7d9e0dba5a73b51af24f
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
Diffstat (limited to 'src/qml/compiler')
-rw-r--r-- | src/qml/compiler/qv4isel_masm.cpp | 40 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_masm_p.h | 2 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_moth_p.h | 2 |
3 files changed, 22 insertions, 22 deletions
diff --git a/src/qml/compiler/qv4isel_masm.cpp b/src/qml/compiler/qv4isel_masm.cpp index f1a6b0c02b..f041c7916c 100644 --- a/src/qml/compiler/qv4isel_masm.cpp +++ b/src/qml/compiler/qv4isel_masm.cpp @@ -267,23 +267,23 @@ Assembler::Pointer Assembler::loadTempAddress(RegisterID reg, V4IR::Temp *t) int scope = t->scope; RegisterID context = ContextRegister; if (scope) { - loadPtr(Address(ContextRegister, offsetof(ExecutionContext, outer)), ScratchRegister); + loadPtr(Address(ContextRegister, qOffsetOf(ExecutionContext, outer)), ScratchRegister); --scope; context = ScratchRegister; while (scope) { - loadPtr(Address(context, offsetof(ExecutionContext, outer)), context); + loadPtr(Address(context, qOffsetOf(ExecutionContext, outer)), context); --scope; } } switch (t->kind) { case V4IR::Temp::Formal: case V4IR::Temp::ScopedFormal: { - loadPtr(Address(context, offsetof(CallContext, arguments)), reg); + loadPtr(Address(context, qOffsetOf(CallContext, arguments)), reg); offset = t->index * sizeof(Value); } break; case V4IR::Temp::Local: case V4IR::Temp::ScopedLocal: { - loadPtr(Address(context, offsetof(CallContext, locals)), reg); + loadPtr(Address(context, qOffsetOf(CallContext, locals)), reg); offset = t->index * sizeof(Value); } break; case V4IR::Temp::StackSlot: { @@ -297,7 +297,7 @@ Assembler::Pointer Assembler::loadTempAddress(RegisterID reg, V4IR::Temp *t) Assembler::Pointer Assembler::loadStringAddress(RegisterID reg, const QString &string) { - loadPtr(Address(Assembler::ContextRegister, offsetof(QV4::ExecutionContext, runtimeStrings)), reg); + loadPtr(Address(Assembler::ContextRegister, qOffsetOf(QV4::ExecutionContext, runtimeStrings)), reg); const int id = _isel->registerString(string); return Pointer(reg, id * sizeof(QV4::String*)); } @@ -653,10 +653,10 @@ void InstructionSelection::run(int functionIndex) #endif const int locals = _as->stackLayout().calculateJSStackFrameSize(); - _as->loadPtr(Address(Assembler::ContextRegister, offsetof(ExecutionContext, engine)), Assembler::ScratchRegister); - _as->loadPtr(Address(Assembler::ScratchRegister, offsetof(ExecutionEngine, jsStackTop)), Assembler::LocalsRegister); + _as->loadPtr(Address(Assembler::ContextRegister, qOffsetOf(ExecutionContext, engine)), Assembler::ScratchRegister); + _as->loadPtr(Address(Assembler::ScratchRegister, qOffsetOf(ExecutionEngine, jsStackTop)), Assembler::LocalsRegister); _as->addPtr(Assembler::TrustedImm32(sizeof(QV4::Value)*locals), Assembler::LocalsRegister); - _as->storePtr(Assembler::LocalsRegister, Address(Assembler::ScratchRegister, offsetof(ExecutionEngine, jsStackTop))); + _as->storePtr(Assembler::LocalsRegister, Address(Assembler::ScratchRegister, qOffsetOf(ExecutionEngine, jsStackTop))); for (int i = 0, ei = _function->basicBlocks.size(); i != ei; ++i) { V4IR::BasicBlock *nextBlock = (i < ei - 1) ? _function->basicBlocks[i + 1] : 0; @@ -946,11 +946,11 @@ void InstructionSelection::callValue(V4IR::Temp *value, V4IR::ExprList *args, V4 void InstructionSelection::loadThisObject(V4IR::Temp *temp) { #if defined(VALUE_FITS_IN_REGISTER) - _as->load64(Pointer(Assembler::ContextRegister, offsetof(ExecutionContext, thisObject)), + _as->load64(Pointer(Assembler::ContextRegister, qOffsetOf(ExecutionContext, thisObject)), Assembler::ReturnValueRegister); _as->storeReturnValue(temp); #else - _as->copyValue(temp, Pointer(Assembler::ContextRegister, offsetof(ExecutionContext, thisObject))); + _as->copyValue(temp, Pointer(Assembler::ContextRegister, qOffsetOf(ExecutionContext, thisObject))); #endif } @@ -1004,7 +1004,7 @@ void InstructionSelection::getActivationProperty(const V4IR::Name *name, V4IR::T { if (useFastLookups && name->global) { uint index = registerGlobalGetterLookup(*name->id); - generateLookupCall(temp, index, offsetof(QV4::Lookup, globalGetter), Assembler::ContextRegister, Assembler::Void); + generateLookupCall(temp, index, qOffsetOf(QV4::Lookup, globalGetter), Assembler::ContextRegister, Assembler::Void); return; } generateFunctionCall(temp, __qmljs_get_activation_property, Assembler::ContextRegister, Assembler::PointerToString(*name->id)); @@ -1027,7 +1027,7 @@ void InstructionSelection::getProperty(V4IR::Expr *base, const QString &name, V4 { if (useFastLookups) { uint index = registerGetterLookup(name); - generateLookupCall(target, index, offsetof(QV4::Lookup, getter), Assembler::PointerToValue(base), Assembler::Void); + generateLookupCall(target, index, qOffsetOf(QV4::Lookup, getter), Assembler::PointerToValue(base), Assembler::Void); } else { generateFunctionCall(target, __qmljs_get_property, Assembler::ContextRegister, Assembler::PointerToValue(base), Assembler::PointerToString(name)); @@ -1039,7 +1039,7 @@ void InstructionSelection::setProperty(V4IR::Expr *source, V4IR::Expr *targetBas { if (useFastLookups) { uint index = registerSetterLookup(targetName); - generateLookupCall(Assembler::Void, index, offsetof(QV4::Lookup, setter), + generateLookupCall(Assembler::Void, index, qOffsetOf(QV4::Lookup, setter), Assembler::PointerToValue(targetBase), Assembler::PointerToValue(source)); } else { @@ -1719,11 +1719,11 @@ void InstructionSelection::visitCJump(V4IR::CJump *s) } else { Address temp = _as->loadTempAddress(Assembler::ScratchRegister, t); Address tag = temp; - tag.offset += offsetof(QV4::Value, tag); + tag.offset += qOffsetOf(QV4::Value, tag); Assembler::Jump booleanConversion = _as->branch32(Assembler::NotEqual, tag, Assembler::TrustedImm32(QV4::Value::Boolean_Type)); Address data = temp; - data.offset += offsetof(QV4::Value, int_32); + data.offset += qOffsetOf(QV4::Value, int_32); _as->load32(data, Assembler::ReturnValueRegister); Assembler::Jump testBoolean = _as->jump(); @@ -1856,8 +1856,8 @@ void InstructionSelection::visitRet(V4IR::Ret *s) const int locals = _as->stackLayout().calculateJSStackFrameSize(); _as->subPtr(Assembler::TrustedImm32(sizeof(QV4::Value)*locals), Assembler::LocalsRegister); - _as->loadPtr(Address(Assembler::ContextRegister, offsetof(ExecutionContext, engine)), Assembler::ScratchRegister); - _as->storePtr(Assembler::LocalsRegister, Address(Assembler::ScratchRegister, offsetof(ExecutionEngine, jsStackTop))); + _as->loadPtr(Address(Assembler::ContextRegister, qOffsetOf(ExecutionContext, engine)), Assembler::ScratchRegister); + _as->storePtr(Assembler::LocalsRegister, Address(Assembler::ScratchRegister, qOffsetOf(ExecutionEngine, jsStackTop))); _as->leaveStandardStackFrame(); _as->ret(); @@ -1887,11 +1887,11 @@ int InstructionSelection::prepareCallData(V4IR::ExprList* args, V4IR::Expr *this ++argc; } - Pointer p = _as->stackLayout().callDataAddress(offsetof(CallData, tag)); + Pointer p = _as->stackLayout().callDataAddress(qOffsetOf(CallData, tag)); _as->store32(Assembler::TrustedImm32(QV4::Value::Integer_Type), p); - p = _as->stackLayout().callDataAddress(offsetof(CallData, argc)); + p = _as->stackLayout().callDataAddress(qOffsetOf(CallData, argc)); _as->store32(Assembler::TrustedImm32(argc), p); - p = _as->stackLayout().callDataAddress(offsetof(CallData, thisObject)); + p = _as->stackLayout().callDataAddress(qOffsetOf(CallData, thisObject)); if (!thisObject) _as->storeValue(QV4::Value::undefinedValue(), p); else diff --git a/src/qml/compiler/qv4isel_masm_p.h b/src/qml/compiler/qv4isel_masm_p.h index 5de0e8ce58..af9ca08a4b 100644 --- a/src/qml/compiler/qv4isel_masm_p.h +++ b/src/qml/compiler/qv4isel_masm_p.h @@ -1456,7 +1456,7 @@ private: template <typename Retval, typename Arg1, typename Arg2> void generateLookupCall(Retval retval, uint index, uint getterSetterOffset, Arg1 arg1, Arg2 arg2) { - _as->loadPtr(Assembler::Address(Assembler::ContextRegister, offsetof(QV4::ExecutionContext, lookups)), + _as->loadPtr(Assembler::Address(Assembler::ContextRegister, qOffsetOf(QV4::ExecutionContext, lookups)), Assembler::ReturnValueRegister); Assembler::Pointer lookupAddr(Assembler::ReturnValueRegister, index * sizeof(QV4::Lookup)); diff --git a/src/qml/compiler/qv4isel_moth_p.h b/src/qml/compiler/qv4isel_moth_p.h index c4b298eaac..df6095db5b 100644 --- a/src/qml/compiler/qv4isel_moth_p.h +++ b/src/qml/compiler/qv4isel_moth_p.h @@ -157,7 +157,7 @@ private: int scratchTempIndex() const { return _function->tempCount; } int callDataStart() const { return scratchTempIndex() + 1; } - int outgoingArgumentTempStart() const { return callDataStart() + offsetof(QV4::CallData, args)/sizeof(QV4::Value); } + int outgoingArgumentTempStart() const { return callDataStart() + qOffsetOf(QV4::CallData, args)/sizeof(QV4::Value); } int frameSize() const { return outgoingArgumentTempStart() + _function->maxNumberOfArguments; } template <int Instr> |