< 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 >