diff options
author | Lars Knoll <[email protected]> | 2017-01-27 09:05:54 +0100 |
---|---|---|
committer | Lars Knoll <[email protected]> | 2017-03-09 08:58:12 +0000 |
commit | 58b882ad42f99e03ac8dca13ff9c0d39fcafbaa0 (patch) | |
tree | e518e549f6410ac521ec0506bfca3dc918381e49 /src/qml/jsruntime/qv4context.cpp | |
parent | 4de7e48ab160dacc7a09360e80264eac4945a8f4 (diff) |
Avoid one indirection when looking up local variables
Simple CallContext's never have locals, as they get converted to
temps in the compiler. For regular CallContext's, local variables
always got appended to the callcontext.
So there was no need to have an additional indirect pointer to them
in the CallContext. This speeds up v8-bench by 1-2%.
Change-Id: I3def7ba653aea5bc5761076f398450ae30c62823
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/jsruntime/qv4context.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4context.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp index fe01b9abad..569523595c 100644 --- a/src/qml/jsruntime/qv4context.cpp +++ b/src/qml/jsruntime/qv4context.cpp @@ -61,7 +61,7 @@ DEFINE_MANAGED_VTABLE(GlobalContext); /* Function *f, int argc */ #define requiredMemoryForExecutionContect(f, argc) \ - ((sizeof(CallContext::Data) + 7) & ~7) + \ + sizeof(CallContext::Data) - sizeof(Value) + \ sizeof(Value) * (f->compiledFunction->nLocals + qMax((uint)argc, f->nFormals)) + sizeof(CallData) Heap::CallContext *ExecutionContext::newCallContext(Function *function, CallData *callData) @@ -80,7 +80,6 @@ Heap::CallContext *ExecutionContext::newCallContext(Function *function, CallData c->compilationUnit = function->compilationUnit; c->lookups = c->compilationUnit->runtimeLookups; c->constantTable = c->compilationUnit->constants; - c->locals = (Value *)((quintptr(c + 1) + 7) & ~7); const CompiledData::Function *compiledFunction = function->compiledFunction; int nLocals = compiledFunction->nLocals; @@ -314,7 +313,6 @@ void QV4::ExecutionContext::simpleCall(Scope &scope, CallData *callData, Functio ctx->lookups = function->compilationUnit->runtimeLookups; ctx->constantTable = function->compilationUnit->constants; ctx->outer = this->d(); - ctx->locals = scope.alloc(function->compiledFunction->nLocals); for (int i = callData->argc; i < (int)function->nFormals; ++i) callData->args[i] = Encode::undefined(); |