diff options
author | Dragos Sbirlea <dragoss@google.com> | 2013-08-12 08:53:04 -0700 |
---|---|---|
committer | Dragos Sbirlea <dragoss@google.com> | 2013-08-13 10:09:48 -0700 |
commit | 08bf1967611965b65ffd5de1aa603b60e7b2d6a8 (patch) | |
tree | a9272c3a767cee878fdad81207bd8037f08dd830 /runtime/entrypoints/interpreter | |
parent | 73a79074c06d8b0a8c14946438c59c3821d88fe7 (diff) | |
download | art-08bf1967611965b65ffd5de1aa603b60e7b2d6a8.zip art-08bf1967611965b65ffd5de1aa603b60e7b2d6a8.tar.gz art-08bf1967611965b65ffd5de1aa603b60e7b2d6a8.tar.bz2 |
Work on SMALL_ART and PORTABLE working at the same time.
Change-Id: Iddedf63b6f9d908717a4d30f963e9b81a9604d49
Diffstat (limited to 'runtime/entrypoints/interpreter')
-rw-r--r-- | runtime/entrypoints/interpreter/interpreter_entrypoints.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/runtime/entrypoints/interpreter/interpreter_entrypoints.cc b/runtime/entrypoints/interpreter/interpreter_entrypoints.cc index d99c43e..67f6d98 100644 --- a/runtime/entrypoints/interpreter/interpreter_entrypoints.cc +++ b/runtime/entrypoints/interpreter/interpreter_entrypoints.cc @@ -25,7 +25,7 @@ namespace art { -extern "C" void artInterperterToCompiledCodeBridge(Thread* self, MethodHelper& mh, +extern "C" void artInterpreterToCompiledCodeBridge(Thread* self, MethodHelper& mh, const DexFile::CodeItem* code_item, ShadowFrame* shadow_frame, JValue* result) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { @@ -35,9 +35,15 @@ extern "C" void artInterperterToCompiledCodeBridge(Thread* self, MethodHelper& m Runtime::Current()->GetClassLinker()->EnsureInitialized(method->GetDeclaringClass(), true, true); } uint16_t arg_offset = (code_item == NULL) ? 0 : code_item->registers_size_ - code_item->ins_size_; +#if defined(ART_USE_PORTABLE_COMPILER) ArgArray arg_array(mh.GetShorty(), mh.GetShortyLength()); - arg_array.BuildArgArray(shadow_frame, arg_offset); + arg_array.BuildArgArrayFromFrame(shadow_frame, arg_offset); method->Invoke(self, arg_array.GetArray(), arg_array.GetNumBytes(), result, mh.GetShorty()[0]); +#else + method->Invoke(self, shadow_frame->GetVRegArgs(arg_offset), + (shadow_frame->NumberOfVRegs() - arg_offset) * 4, + result, mh.GetShorty()[0]); +#endif } } // namespace art |