diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-30 15:16:15 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-09-01 12:30:43 +0000 |
commit | cc7a858698063649f9770a89949354e2b58ae288 (patch) | |
tree | 5a79c1335192ed757edd69b5b9ded873423aa0bd /src/qml/jsruntime/qv4context_p.h | |
parent | 20596907289d50be3a5e1597ba62cefb733e6f19 (diff) |
Unify JSStackFrame and CallData
Change-Id: I4494dae8166026074c9efc74bac62de9d3fa2342
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4context_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4context_p.h | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4context_p.h b/src/qml/jsruntime/qv4context_p.h index 8bcf89c1a4..ec027c9fd3 100644 --- a/src/qml/jsruntime/qv4context_p.h +++ b/src/qml/jsruntime/qv4context_p.h @@ -72,10 +72,21 @@ struct CatchContext; struct QmlContext; struct QQmlContextWrapper; -// Attention: Make sure that this structure is the same size on 32-bit and 64-bit -// architecture or you'll have to change the JIT code. struct CallData { + enum Offsets { + Function = 0, + Context = 1, + Accumulator = 2, + This = 3, + Argc = 4 + }; + + Value function; + Value context; + Value accumulator; + Value thisObject; + // below is to be compatible with Value. Initialize tag to 0 #if Q_BYTE_ORDER != Q_LITTLE_ENDIAN uint tag; @@ -88,17 +99,14 @@ struct CallData return i < argc ? args[i].asReturnedValue() : Primitive::undefinedValue().asReturnedValue(); } - Value function; - Value context; - Value thisObject; Value args[1]; static Q_DECL_CONSTEXPR int HeaderSize() { return offsetof(CallData, args) / sizeof(QV4::Value); } }; Q_STATIC_ASSERT(std::is_standard_layout<CallData>::value); -Q_STATIC_ASSERT(offsetof(CallData, thisObject) == 3*sizeof(Value)); -Q_STATIC_ASSERT(offsetof(CallData, args) == 4*sizeof(Value)); +Q_STATIC_ASSERT(offsetof(CallData, thisObject) == CallData::This*sizeof(Value)); +Q_STATIC_ASSERT(offsetof(CallData, args) == 5*sizeof(Value)); namespace Heap { |