< prev index next >

src/hotspot/share/opto/idealKit.cpp

Print this page

        

*** 486,502 **** } //----------------------------- make_call ---------------------------- // Trivial runtime call ! void IdealKit::make_leaf_call(const TypeFunc *slow_call_type, ! address slow_call, ! const char *leaf_name, ! Node* parm0, ! Node* parm1, ! Node* parm2, ! Node* parm3) { // We only handle taking in RawMem and modifying RawMem const TypePtr* adr_type = TypeRawPtr::BOTTOM; uint adr_idx = C->get_alias_index(adr_type); --- 486,502 ---- } //----------------------------- make_call ---------------------------- // Trivial runtime call ! Node* IdealKit::make_leaf_call(const TypeFunc *slow_call_type, ! address slow_call, ! const char *leaf_name, ! Node* parm0, ! Node* parm1, ! Node* parm2, ! Node* parm3) { // We only handle taking in RawMem and modifying RawMem const TypePtr* adr_type = TypeRawPtr::BOTTOM; uint adr_idx = C->get_alias_index(adr_type);
*** 530,539 **** --- 530,545 ---- // Set the RawPtr memory state only. set_memory(mem, adr_idx); assert(C->alias_type(call->adr_type()) == C->alias_type(adr_type), "call node must be constructed correctly"); + Node* res = NULL; + if (slow_call_type->range()->cnt() > TypeFunc::Parms) { + assert(slow_call_type->range()->cnt() == TypeFunc::Parms+1, "only one return value"); + res = transform(new ProjNode(call, TypeFunc::Parms)); + } + return res; } void IdealKit::make_leaf_call_no_fp(const TypeFunc *slow_call_type, address slow_call, const char *leaf_name,
< prev index next >