src/hotspot/share/classfile/javaClasses.cpp
changeset 53205 8f79bae1a535
parent 53143 6b7240a24b56
child 53212 bccff579c2ff
equal deleted inserted replaced
53204:9a3750a63823 53205:8f79bae1a535
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
  2598     java_lang_StackTraceElement::set_lineNumber(element(), line_number);
  2598     java_lang_StackTraceElement::set_lineNumber(element(), line_number);
  2599   }
  2599   }
  2600 }
  2600 }
  2601 
  2601 
  2602 Method* java_lang_StackFrameInfo::get_method(Handle stackFrame, InstanceKlass* holder, TRAPS) {
  2602 Method* java_lang_StackFrameInfo::get_method(Handle stackFrame, InstanceKlass* holder, TRAPS) {
       
  2603   HandleMark hm(THREAD);
  2603   Handle mname(THREAD, stackFrame->obj_field(_memberName_offset));
  2604   Handle mname(THREAD, stackFrame->obj_field(_memberName_offset));
  2604   Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mname());
  2605   Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mname());
  2605   // we should expand MemberName::name when Throwable uses StackTrace
  2606   // we should expand MemberName::name when Throwable uses StackTrace
  2606   // MethodHandles::expand_MemberName(mname, MethodHandles::_suppress_defc|MethodHandles::_suppress_type, CHECK_NULL);
  2607   // MethodHandles::expand_MemberName(mname, MethodHandles::_suppress_defc|MethodHandles::_suppress_type, CHECK_NULL);
  2607   return method;
  2608   return method;
  2608 }
  2609 }
  2609 
  2610 
  2610 void java_lang_StackFrameInfo::set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci, TRAPS) {
  2611 void java_lang_StackFrameInfo::set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci, TRAPS) {
  2611   // set Method* or mid/cpref
  2612   // set Method* or mid/cpref
       
  2613   HandleMark hm(THREAD);
  2612   Handle mname(Thread::current(), stackFrame->obj_field(_memberName_offset));
  2614   Handle mname(Thread::current(), stackFrame->obj_field(_memberName_offset));
  2613   InstanceKlass* ik = method->method_holder();
  2615   InstanceKlass* ik = method->method_holder();
  2614   CallInfo info(method(), ik, CHECK);
  2616   CallInfo info(method(), ik, CHECK);
  2615   MethodHandles::init_method_MemberName(mname, info);
  2617   MethodHandles::init_method_MemberName(mname, info);
  2616   // set bci
  2618   // set bci
  2621   java_lang_StackFrameInfo::set_version(stackFrame(), (short)version);
  2623   java_lang_StackFrameInfo::set_version(stackFrame(), (short)version);
  2622 }
  2624 }
  2623 
  2625 
  2624 void java_lang_StackFrameInfo::to_stack_trace_element(Handle stackFrame, Handle stack_trace_element, TRAPS) {
  2626 void java_lang_StackFrameInfo::to_stack_trace_element(Handle stackFrame, Handle stack_trace_element, TRAPS) {
  2625   ResourceMark rm(THREAD);
  2627   ResourceMark rm(THREAD);
       
  2628   HandleMark hm(THREAD);
  2626   Handle mname(THREAD, stackFrame->obj_field(java_lang_StackFrameInfo::_memberName_offset));
  2629   Handle mname(THREAD, stackFrame->obj_field(java_lang_StackFrameInfo::_memberName_offset));
  2627   Klass* clazz = java_lang_Class::as_Klass(java_lang_invoke_MemberName::clazz(mname()));
  2630   Klass* clazz = java_lang_Class::as_Klass(java_lang_invoke_MemberName::clazz(mname()));
  2628   InstanceKlass* holder = InstanceKlass::cast(clazz);
  2631   InstanceKlass* holder = InstanceKlass::cast(clazz);
  2629   Method* method = java_lang_StackFrameInfo::get_method(stackFrame, holder, CHECK);
  2632   Method* method = java_lang_StackFrameInfo::get_method(stackFrame, holder, CHECK);
  2630 
  2633