diff options
Diffstat (limited to 'src/qml/jsruntime/qv4stackframe.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4stackframe.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4stackframe.cpp b/src/qml/jsruntime/qv4stackframe.cpp index e8ff9a89bc..5117e745a0 100644 --- a/src/qml/jsruntime/qv4stackframe.cpp +++ b/src/qml/jsruntime/qv4stackframe.cpp @@ -40,7 +40,7 @@ int CppStackFrame::lineNumber() const { if (auto *line = lineAndStatement(this)) return line->line; - return -1; + return missingLineNumber(); } int CppStackFrame::statementNumber() const @@ -50,6 +50,15 @@ int CppStackFrame::statementNumber() const return -1; } +int CppStackFrame::missingLineNumber() const +{ + // Remove the first bit so that we can cast to positive int and negate. + // Remove the last bit so that it can't be -1. + const int result = -int(quintptr(this) & 0x7ffffffe); + Q_ASSERT(result < -1); + return result; +} + ReturnedValue QV4::CppStackFrame::thisObject() const { if (isJSTypesFrame()) |