summaryrefslogtreecommitdiffstats
path: root/runtime/entrypoints/interpreter
diff options
context:
space:
mode:
authorDragos Sbirlea <dragoss@google.com>2013-08-12 08:53:04 -0700
committerDragos Sbirlea <dragoss@google.com>2013-08-13 10:09:48 -0700
commit08bf1967611965b65ffd5de1aa603b60e7b2d6a8 (patch)
treea9272c3a767cee878fdad81207bd8037f08dd830 /runtime/entrypoints/interpreter
parent73a79074c06d8b0a8c14946438c59c3821d88fe7 (diff)
downloadart-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.cc10
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