diff options
author | 2021-07-28 14:33:34 +0000 | |
---|---|---|
committer | 2021-08-31 16:13:39 +0000 | |
commit | 98f01d1deac3a938e49f0725c58798e38ef59277 (patch) | |
tree | dcbf841ef87fdb1baf21f231e20cc9bd9f3cb0df /compiler/optimizing/intrinsics.h | |
parent | 96dadefd24331f6808cb287048269ba772423c33 (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.h | 8 |
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 // |