OSDN Git Service

Intercept JNI invocation of String.<init> methods.
authorJeff Hao <jeffhao@google.com>
Wed, 20 May 2015 03:30:23 +0000 (20:30 -0700)
committerJeff Hao <jeffhao@google.com>
Thu, 21 May 2015 01:40:43 +0000 (18:40 -0700)
commit39b6c24ce68cf05db0f82f454b4401cfb03d675f
tree29e15d2597cd05419a1c0faedfe6977af9a7dfa3
parent768b19b6bbddaa2262f6532e7fcb96fecbfee981
Intercept JNI invocation of String.<init> methods.

libmono uses JNI AllocObject and CallNonvirtualVoidMethod to create and
initialize a string instead of using the recommended NewObject. This
change adds an intercept to change the String.<init> call to a
StringFactory call instead. Then, it uses the object id of the original
string object referrer and maps it to the result of the StringFactory.

Bug: 21288130

(cherry picked from commit 15e9ad1d028d7f12cb598b075453173532a00d91)

Change-Id: I3421c43722c07397da4a398c2ca9110e1d40bcfa
runtime/debugger.cc
runtime/indirect_reference_table-inl.h
runtime/indirect_reference_table.h
runtime/jni_internal.cc
runtime/jni_internal_test.cc
runtime/reflection.cc
runtime/reflection.h
runtime/reflection_test.cc
runtime/thread.cc
test/004-JniTest/jni_test.cc
test/020-string/src/Main.java