summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2021-07-20 15:02:33 +0100
committer Treehugger Robot <treehugger-gerrit@google.com> 2021-07-21 12:57:37 +0000
commitb3a7a6a72d7b91ee5507bd7314a3aae3948e6f29 (patch)
treef65ecb447173e067fd5bd9437c19380b0d72bf04 /compiler/optimizing/intrinsics.h
parentc4597765f2d7496e428c0b0dc1b26ffb71c61093 (diff)
Compile time null checks for VarHandle intrinsics.
Create a `VarHandleOptimizations` helper class holding the optimization flags for VarHandle intrinsics. Add a flag to avoid emitting the intrinsic implementation and move shared checks previously duplicated in intrinsic codegens helpers `HasVarHandleIntrinsicImplementation()` to the instruction simplifier. Individual intrinsic codegens perform additional checks as needed. Add the first optimization flag to avoid null check on the holder object if it cannot be null. And do not emit the intrinsic implementation if the holder object is null. Test: testrunner.py --host --optimizing Test: testrunner.py --target --optimizing Bug: 191765508 Change-Id: I53b1b57c327f02a9913f22885c1ce663cd9c3d44
Diffstat (limited to 'compiler/optimizing/intrinsics.h')
-rw-r--r--compiler/optimizing/intrinsics.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/optimizing/intrinsics.h b/compiler/optimizing/intrinsics.h
index 62b5faa7d0..9bc8c5126b 100644
--- a/compiler/optimizing/intrinsics.h
+++ b/compiler/optimizing/intrinsics.h
@@ -224,6 +224,14 @@ class SystemArrayCopyOptimizations : public IntrinsicOptimizations {
DISALLOW_COPY_AND_ASSIGN(SystemArrayCopyOptimizations);
};
+class VarHandleOptimizations : public IntrinsicOptimizations {
+ public:
+ explicit VarHandleOptimizations(HInvoke* invoke) : IntrinsicOptimizations(invoke) {}
+
+ INTRINSIC_OPTIMIZATION(DoNotIntrinsify, 0); // One of the checks is statically known to fail.
+ INTRINSIC_OPTIMIZATION(SkipObjectNullCheck, 1); // Not applicable for static fields.
+};
+
#undef INTRISIC_OPTIMIZATION
//