diff options
author | Fred Shih <ffred@google.com> | 2014-06-18 11:26:11 -0700 |
---|---|---|
committer | Fred Shih <ffred@google.com> | 2014-07-10 10:41:34 -0700 |
commit | 460503b13bc894828a2d2d47d09e5534b3e91aa1 (patch) | |
tree | 97c42c08fd04034cf6cecadb39644bf9531be0f1 /runtime/class_linker_test.cc | |
parent | adce33da293b0eeaaf52673338770f22be71ca5d (diff) | |
download | art-460503b13bc894828a2d2d47d09e5534b3e91aa1.tar.gz art-460503b13bc894828a2d2d47d09e5534b3e91aa1.tar.bz2 art-460503b13bc894828a2d2d47d09e5534b3e91aa1.zip |
Add intrinsic for Reference.get()
Added an intrinsic function for Reference.get(). Return immediately
without going through JNI if the slow path is not currently in use.
Otherwise, branch off to the the existing JNI function.
Approximately 47x speedup for cases where slow path is not enabled.
Change-Id: I13ad65a356fe4e104d8d83980694dc2740d7d039
Diffstat (limited to 'runtime/class_linker_test.cc')
-rw-r--r-- | runtime/class_linker_test.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/runtime/class_linker_test.cc b/runtime/class_linker_test.cc index 04f6946aa8..8fdead6dde 100644 --- a/runtime/class_linker_test.cc +++ b/runtime/class_linker_test.cc @@ -626,6 +626,13 @@ struct ReferenceOffsets : public CheckOffsets<mirror::Reference> { }; }; +struct ReferenceClassOffsets : public CheckOffsets<mirror::ReferenceClass> { + ReferenceClassOffsets() : CheckOffsets<mirror::ReferenceClass>(true, "Ljava/lang/ref/Reference;") { + offsets.push_back(CheckOffset(OFFSETOF_MEMBER(mirror::ReferenceClass, disable_intrinsic_), "disableIntrinsic")); + offsets.push_back(CheckOffset(OFFSETOF_MEMBER(mirror::ReferenceClass, slow_path_enabled_), "slowPathEnabled")); + }; +}; + struct FinalizerReferenceOffsets : public CheckOffsets<mirror::FinalizerReference> { FinalizerReferenceOffsets() : CheckOffsets<mirror::FinalizerReference>(false, "Ljava/lang/ref/FinalizerReference;") { // alphabetical references @@ -651,6 +658,7 @@ TEST_F(ClassLinkerTest, ValidateFieldOrderOfJavaCppUnionClasses) { EXPECT_TRUE(ProxyOffsets().Check()); EXPECT_TRUE(DexCacheOffsets().Check()); EXPECT_TRUE(ReferenceOffsets().Check()); + EXPECT_TRUE(ReferenceClassOffsets().Check()); EXPECT_TRUE(FinalizerReferenceOffsets().Check()); EXPECT_TRUE(ClassClassOffsets().Check()); |