summaryrefslogtreecommitdiffstats
path: root/runtime/mirror/art_field.h
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2014-03-21 11:21:29 -0700
committerIan Rogers <irogers@google.com>2014-03-21 11:25:56 -0700
commit62f0512bf6d9bc6141358bf22e93afa70dc58b1a (patch)
tree7fdc0b9be0df2da5ff2575862a24db5c10eae9dc /runtime/mirror/art_field.h
parent215f3e60cd97471c0843eae22a041c335e89071c (diff)
downloadart-62f0512bf6d9bc6141358bf22e93afa70dc58b1a.zip
art-62f0512bf6d9bc6141358bf22e93afa70dc58b1a.tar.gz
art-62f0512bf6d9bc6141358bf22e93afa70dc58b1a.tar.bz2
Improvements to Field.get/set.
Avoid unnecessary repeated computation in Field.get/set. Refactor FromReflectedField and FromReflectedMethod into common helpers in mirror::ArtField and mirror::ArtMethod, and make use of thereby avoiding transitions through JNI. Avoid JNI use from within FromReflectedField and FromReflectedMethod. Tidy up Field.get/set wrt moving collector support. Bug: 12189533 Change-Id: I643ab3474bade4abac3a3ae2b6e373b2bb0891c8
Diffstat (limited to 'runtime/mirror/art_field.h')
-rw-r--r--runtime/mirror/art_field.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/runtime/mirror/art_field.h b/runtime/mirror/art_field.h
index 46287c3..0daa838 100644
--- a/runtime/mirror/art_field.h
+++ b/runtime/mirror/art_field.h
@@ -25,12 +25,16 @@
namespace art {
struct ArtFieldOffsets;
+class ScopedObjectAccess;
namespace mirror {
// C++ mirror of java.lang.reflect.ArtField
class MANAGED ArtField : public Object {
public:
+ static ArtField* FromReflectedField(const ScopedObjectAccess& soa, jobject jlr_field)
+ SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+
Class* GetDeclaringClass() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
void SetDeclaringClass(Class *new_declaring_class) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);