diff options
| author | 2016-04-01 11:25:58 +0000 | |
|---|---|---|
| committer | 2016-04-01 11:25:58 +0000 | |
| commit | 739253e0546b90a54d704324ce971b82cff84adc (patch) | |
| tree | d29b84e3ec39cf10c1056721e1556c80d3ef5869 /runtime/interpreter/unstarted_runtime.cc | |
| parent | afc4829d593c173e8e9bdca90257a4cc8a104537 (diff) | |
| parent | 34a316fa8b08d7b818c73ba8fd606a92b1e632ad (diff) | |
Merge "unstarted_runtime: Add additional cutouts"
Diffstat (limited to 'runtime/interpreter/unstarted_runtime.cc')
| -rw-r--r-- | runtime/interpreter/unstarted_runtime.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/runtime/interpreter/unstarted_runtime.cc b/runtime/interpreter/unstarted_runtime.cc index eaea01d2f0..30733b57b9 100644 --- a/runtime/interpreter/unstarted_runtime.cc +++ b/runtime/interpreter/unstarted_runtime.cc @@ -444,6 +444,12 @@ void UnstartedRuntime::UnstartedSystemArraycopyInt( UnstartedRuntime::UnstartedSystemArraycopy(self, shadow_frame, result, arg_offset); } +void UnstartedRuntime::UnstartedSystemGetSecurityManager( + Thread* self ATTRIBUTE_UNUSED, ShadowFrame* shadow_frame ATTRIBUTE_UNUSED, + JValue* result, size_t arg_offset ATTRIBUTE_UNUSED) { + result->SetL(nullptr); +} + void UnstartedRuntime::UnstartedThreadLocalGet( Thread* self, ShadowFrame* shadow_frame, JValue* result, size_t arg_offset ATTRIBUTE_UNUSED) { std::string caller(PrettyMethod(shadow_frame->GetLink()->GetMethod())); @@ -1234,6 +1240,19 @@ void UnstartedRuntime::UnstartedJNIUnsafeCompareAndSwapInt( result->SetZ(success ? JNI_TRUE : JNI_FALSE); } +void UnstartedRuntime::UnstartedJNIUnsafeGetIntVolatile( + Thread* self, ArtMethod* method ATTRIBUTE_UNUSED, mirror::Object* receiver ATTRIBUTE_UNUSED, + uint32_t* args, JValue* result) { + mirror::Object* obj = reinterpret_cast<mirror::Object*>(args[0]); + if (obj == nullptr) { + AbortTransactionOrFail(self, "Cannot access null object, retry at runtime."); + return; + } + + jlong offset = (static_cast<uint64_t>(args[2]) << 32) | args[1]; + result->SetI(obj->GetField32Volatile(MemberOffset(offset))); +} + void UnstartedRuntime::UnstartedJNIUnsafePutObject( Thread* self ATTRIBUTE_UNUSED, ArtMethod* method ATTRIBUTE_UNUSED, mirror::Object* receiver ATTRIBUTE_UNUSED, uint32_t* args, JValue* result ATTRIBUTE_UNUSED) { |