// Prepare JDWP ids for the reply.
JDWP::JdwpTag result_tag = BasicTagFromDescriptor(m->GetShorty());
const bool is_object_result = (result_tag == JDWP::JT_OBJECT);
- StackHandleScope<2> hs(soa.Self());
+ StackHandleScope<3> hs(soa.Self());
Handle<mirror::Object> object_result = hs.NewHandle(is_object_result ? result.GetL() : nullptr);
Handle<mirror::Throwable> exception = hs.NewHandle(soa.Self()->GetException());
soa.Self()->ClearException();
if (exceptionObjectId == 0) {
if (m->GetDeclaringClass()->IsStringClass()) {
// For string constructors, the new string is remapped to the receiver (stored in ref).
- mirror::Object* decoded_ref = soa.Self()->DecodeJObject(ref.get());
+ Handle<mirror::Object> decoded_ref = hs.NewHandle(soa.Self()->DecodeJObject(ref.get()));
result_value = gRegistry->Add(decoded_ref);
- result_tag = TagFromObject(soa, decoded_ref);
+ result_tag = TagFromObject(soa, decoded_ref.Get());
} else {
// TODO we could keep the receiver ObjectId in the DebugInvokeReq to avoid looking into the
// object registry.