summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics.h
diff options
context:
space:
mode:
author Ulyana Trafimovich <skvadrik@google.com> 2021-07-28 14:33:34 +0000
committer Ulyana Trafimovich <skvadrik@google.com> 2021-08-31 16:13:39 +0000
commit98f01d1deac3a938e49f0725c58798e38ef59277 (patch)
treedcbf841ef87fdb1baf21f231e20cc9bd9f3cb0df /compiler/optimizing/intrinsics.h
parent96dadefd24331f6808cb287048269ba772423c33 (diff)
Revert^2 "Compile time null checks for VarHandle intrinsics."
This reverts commit 4a889b7f1e58368f0ffd795eaa24f2f493ccab8d. Reason for revert: relanding the original change after fixing the baseline compiler. Static checks for VarHandle intrinsics are now done in two places: 1) Simple static checks are done for both baseline and optimizing compilers in `HInstructionBuilder::BuildInvokePolymorphic`. 2) More complex checks are done in instruction simplifier only for the optimizing compiler. They can use information provided by preceding optimization passes. Bug: 191765508 Test: art/test.py --host -r Change-Id: I92932f6fcf408c700e6db0101fe2fb1e8300a54a
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
//