summaryrefslogtreecommitdiff
path: root/runtime/mirror/array.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2019-05-28 16:39:29 +0100
committer Vladimir Marko <vmarko@google.com> 2019-05-31 14:15:59 +0000
commit3068d582eff4552ff260d7966fcbdc93e17d0207 (patch)
treebc894a414070a06ea2a231fb98607b57b8c3b0cb /runtime/mirror/array.cc
parent991cd5cc16267b74e390f640eb441102062babb6 (diff)
Clean up creating handles from `this`.
Make these member functions static and take an additional parameter `Handle<.> h_this`. Callers mostly already have a Handle<> to pass, so we avoid an extra StackHandleScope. This pattern was already used for some functions. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing --interpreter Change-Id: I4f4478b0526bcb2f3c23305d3b3cc4a65fff9ff5
Diffstat (limited to 'runtime/mirror/array.cc')
-rw-r--r--runtime/mirror/array.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/runtime/mirror/array.cc b/runtime/mirror/array.cc
index 9bff169191..e011e1cef3 100644
--- a/runtime/mirror/array.cc
+++ b/runtime/mirror/array.cc
@@ -138,16 +138,14 @@ void Array::ThrowArrayStoreException(ObjPtr<Object> object) {
art::ThrowArrayStoreException(object->GetClass(), this->GetClass());
}
-ObjPtr<Array> Array::CopyOf(Thread* self, int32_t new_length) {
- ObjPtr<Class> klass = GetClass();
+ObjPtr<Array> Array::CopyOf(Handle<Array> h_this, Thread* self, int32_t new_length) {
+ ObjPtr<Class> klass = h_this->GetClass();
CHECK(klass->IsPrimitiveArray()) << "Will miss write barriers";
DCHECK_GE(new_length, 0);
- // We may get copied by a compacting GC.
- StackHandleScope<1> hs(self);
- auto h_this(hs.NewHandle(this));
auto* heap = Runtime::Current()->GetHeap();
- gc::AllocatorType allocator_type = heap->IsMovableObject(this) ? heap->GetCurrentAllocator() :
- heap->GetCurrentNonMovingAllocator();
+ gc::AllocatorType allocator_type = heap->IsMovableObject(h_this.Get())
+ ? heap->GetCurrentAllocator()
+ : heap->GetCurrentNonMovingAllocator();
const auto component_size = klass->GetComponentSize();
const auto component_shift = klass->GetComponentSizeShift();
ObjPtr<Array> new_array =