summaryrefslogtreecommitdiffstats
path: root/runtime/interpreter/interpreter.cc
diff options
context:
space:
mode:
authorHiroshi Yamauchi <yamauchi@google.com>2014-09-25 11:46:46 -0700
committerHiroshi Yamauchi <yamauchi@google.com>2014-09-25 15:53:54 -0700
commitf0edfc355893d53d1104b05501c99ad5ccf305c4 (patch)
tree7e1fa49875759512f5d02b1c45435d3e3366b920 /runtime/interpreter/interpreter.cc
parent1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb (diff)
downloadart-f0edfc355893d53d1104b05501c99ad5ccf305c4.tar.gz
art-f0edfc355893d53d1104b05501c99ad5ccf305c4.tar.bz2
art-f0edfc355893d53d1104b05501c99ad5ccf305c4.zip
Some optimizations for the array alloc path.
- Force Array::Alloc() to be inlined. - Simplify the array size overflow check. - Turn fill_usable into a template parameter. - Remove a branch in Array::DataOffset() and avoid Primitive::ComponentSize(), which has a switch, in the array alloc path. - Strength reductions in the array size computation by using component size shifts instead of component sizes. Store component size shift in the upper 16 bits of primitive_type field. - Speedup: ~4% (3435->3284) in MemAllocTest on N4. Bug: 9986565 Change-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c
Diffstat (limited to 'runtime/interpreter/interpreter.cc')
-rw-r--r--runtime/interpreter/interpreter.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/runtime/interpreter/interpreter.cc b/runtime/interpreter/interpreter.cc
index cd8cce06a..d2fcc644a 100644
--- a/runtime/interpreter/interpreter.cc
+++ b/runtime/interpreter/interpreter.cc
@@ -36,8 +36,8 @@ static void UnstartedRuntimeJni(Thread* self, ArtMethod* method,
mirror::Class* array_class = runtime->GetClassLinker()->FindArrayClass(self, &element_class);
DCHECK(array_class != nullptr);
gc::AllocatorType allocator = runtime->GetHeap()->GetCurrentAllocator();
- result->SetL(mirror::Array::Alloc<true>(self, array_class, length,
- array_class->GetComponentSize(), allocator, true));
+ result->SetL(mirror::Array::Alloc<true, true>(self, array_class, length,
+ array_class->GetComponentSizeShift(), allocator));
} else if (name == "java.lang.ClassLoader dalvik.system.VMStack.getCallingClassLoader()") {
result->SetL(NULL);
} else if (name == "java.lang.Class dalvik.system.VMStack.getStackClass2()") {