< prev index next >

src/hotspot/share/opto/callGenerator.cpp

Print this page
rev 52371 : [mq]: lvb.patch

*** 38,47 **** --- 38,50 ---- #include "opto/parse.hpp" #include "opto/rootnode.hpp" #include "opto/runtime.hpp" #include "opto/subnode.hpp" #include "runtime/sharedRuntime.hpp" + #if INCLUDE_SHENANDOAHGC + #include "gc/shenandoah/c2/shenandoahSupport.hpp" + #endif // Utility function. const TypeFunc* CallGenerator::tf() const { return TypeFunc::make(method()); }
*** 832,841 **** --- 835,847 ---- switch (iid) { case vmIntrinsics::_invokeBasic: { // Get MethodHandle receiver: Node* receiver = kit.argument(0); + #if INCLUDE_SHENANDOAHGC + receiver = ShenandoahBarrierNode::skip_through_barrier(receiver); + #endif if (receiver->Opcode() == Op_ConP) { input_not_const = false; const TypeOopPtr* oop_ptr = receiver->bottom_type()->is_oopptr(); ciMethod* target = oop_ptr->const_oop()->as_method_handle()->get_vmtarget(); const int vtable_index = Method::invalid_vtable_index;
*** 859,873 **** --- 865,883 ---- } break; case vmIntrinsics::_linkToVirtual: case vmIntrinsics::_linkToStatic: + case vmIntrinsics::_linkToSpecial: case vmIntrinsics::_linkToInterface: { // Get MemberName argument: Node* member_name = kit.argument(callee->arg_size() - 1); + #if INCLUDE_SHENANDOAHGC + member_name = ShenandoahBarrierNode::skip_through_barrier(member_name); + #endif if (member_name->Opcode() == Op_ConP) { input_not_const = false; const TypeOopPtr* oop_ptr = member_name->bottom_type()->is_oopptr(); ciMethod* target = oop_ptr->const_oop()->as_member_name()->get_vmtarget();
< prev index next >