Force the SkVM interpreter if trace opcodes are encountered.
Trace opcodes will only be implemented in the interpreter. If we
encounter one while JITting a program, returning false will cause
execution to fall back to the interpreter automatically.
Change-Id: I94fce376cb7336c16072a174604de025f1b4e38a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473137
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
diff --git a/src/core/SkVM.cpp b/src/core/SkVM.cpp
index f728c36..ed72628 100644
--- a/src/core/SkVM.cpp
+++ b/src/core/SkVM.cpp
@@ -2678,8 +2678,8 @@
case Op::trace_line:
case Op::trace_var:
case Op::trace_call:
- /* Only supported in the interpreter. */
- break;
+ /* Force this program to run in the interpreter. */
+ return false;
case Op::index:
if (I32->isVectorTy()) {
@@ -3608,8 +3608,8 @@
case Op::trace_line:
case Op::trace_var:
case Op::trace_call:
- /* Only supported in the interpreter. */
- break;
+ /* Force this program to run in the interpreter. */
+ return false;
case Op::store8:
if (scalar) {
@@ -3978,8 +3978,8 @@
case Op::trace_line:
case Op::trace_var:
case Op::trace_call:
- /* Only supported in the interpreter. */
- break;
+ /* Force this program to run in the interpreter. */
+ return false;
case Op::index: {
A::V tmp = alloc_tmp();