aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4compilercontext_p.h
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@qt.io>2018-08-24 15:41:53 +0200
committerErik Verbruggen <erik.verbruggen@qt.io>2018-10-04 11:35:54 +0000
commit1c61e70a0c0f1718c538c04dcc80dd3039ccd384 (patch)
tree9be7d80be0bb8d00ee6b8f9500c7e4805ef3662e /src/qml/compiler/qv4compilercontext_p.h
parentb2610d9d04c2a65d60b36ebf43e3a8d469c0397a (diff)
ES7: Detect Tail Position Calls and pass that to the runtime
Doing the tail call in the runtime will come in a follow-up patch Change-Id: I8224aac0edbdc765ee9b97703948edd52fd33f3e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4compilercontext_p.h')
-rw-r--r--src/qml/compiler/qv4compilercontext_p.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/qml/compiler/qv4compilercontext_p.h b/src/qml/compiler/qv4compilercontext_p.h
index 63306b3672..a29f4ea4cb 100644
--- a/src/qml/compiler/qv4compilercontext_p.h
+++ b/src/qml/compiler/qv4compilercontext_p.h
@@ -343,6 +343,17 @@ struct Context {
void emitBlockFooter(Compiler::Codegen *codegen);
void setupFunctionIndices(Moth::BytecodeGenerator *bytecodeGenerator);
+
+ bool canHaveTailCalls() const
+ {
+ if (!isStrict)
+ return false;
+ if (contextType == ContextType::Function)
+ return !isGenerator;
+ if (contextType == ContextType::Block && parent)
+ return parent->canHaveTailCalls();
+ return false;
+ }
};