53 const TypeLong* lidxtype = TypeLong::make(CONST64(0), index_max, Type::WidenMax);
54 idx = transform_later( new ConvI2LNode(idx, lidxtype) );
55 #endif
56 Node* scale = new LShiftXNode(idx, intcon(shift));
57 transform_later(scale);
58 return basic_plus_adr(ary, base, scale);
59 }
60
61 Node* PhaseMacroExpand::ConvI2L(Node* offset) {
62 return transform_later(new ConvI2LNode(offset));
63 }
64
65 Node* PhaseMacroExpand::make_leaf_call(Node* ctrl, Node* mem,
66 const TypeFunc* call_type, address call_addr,
67 const char* call_name,
68 const TypePtr* adr_type,
69 Node* parm0, Node* parm1,
70 Node* parm2, Node* parm3,
71 Node* parm4, Node* parm5,
72 Node* parm6, Node* parm7) {
73 int size = call_type->domain()->cnt();
74 Node* call = new CallLeafNoFPNode(call_type, call_addr, call_name, adr_type);
75 call->init_req(TypeFunc::Control, ctrl);
76 call->init_req(TypeFunc::I_O , top());
77 call->init_req(TypeFunc::Memory , mem);
78 call->init_req(TypeFunc::ReturnAdr, top());
79 call->init_req(TypeFunc::FramePtr, top());
80
81 // Hook each parm in order. Stop looking at the first NULL.
82 if (parm0 != NULL) { call->init_req(TypeFunc::Parms+0, parm0);
83 if (parm1 != NULL) { call->init_req(TypeFunc::Parms+1, parm1);
84 if (parm2 != NULL) { call->init_req(TypeFunc::Parms+2, parm2);
85 if (parm3 != NULL) { call->init_req(TypeFunc::Parms+3, parm3);
86 if (parm4 != NULL) { call->init_req(TypeFunc::Parms+4, parm4);
87 if (parm5 != NULL) { call->init_req(TypeFunc::Parms+5, parm5);
88 if (parm6 != NULL) { call->init_req(TypeFunc::Parms+6, parm6);
89 if (parm7 != NULL) { call->init_req(TypeFunc::Parms+7, parm7);
90 /* close each nested if ===> */ } } } } } } } }
91 assert(call->in(call->req()-1) != NULL, "must initialize all parms");
92
93 return call;
|
53 const TypeLong* lidxtype = TypeLong::make(CONST64(0), index_max, Type::WidenMax);
54 idx = transform_later( new ConvI2LNode(idx, lidxtype) );
55 #endif
56 Node* scale = new LShiftXNode(idx, intcon(shift));
57 transform_later(scale);
58 return basic_plus_adr(ary, base, scale);
59 }
60
61 Node* PhaseMacroExpand::ConvI2L(Node* offset) {
62 return transform_later(new ConvI2LNode(offset));
63 }
64
65 Node* PhaseMacroExpand::make_leaf_call(Node* ctrl, Node* mem,
66 const TypeFunc* call_type, address call_addr,
67 const char* call_name,
68 const TypePtr* adr_type,
69 Node* parm0, Node* parm1,
70 Node* parm2, Node* parm3,
71 Node* parm4, Node* parm5,
72 Node* parm6, Node* parm7) {
73 int size = call_type->domain_sig()->cnt();
74 Node* call = new CallLeafNoFPNode(call_type, call_addr, call_name, adr_type);
75 call->init_req(TypeFunc::Control, ctrl);
76 call->init_req(TypeFunc::I_O , top());
77 call->init_req(TypeFunc::Memory , mem);
78 call->init_req(TypeFunc::ReturnAdr, top());
79 call->init_req(TypeFunc::FramePtr, top());
80
81 // Hook each parm in order. Stop looking at the first NULL.
82 if (parm0 != NULL) { call->init_req(TypeFunc::Parms+0, parm0);
83 if (parm1 != NULL) { call->init_req(TypeFunc::Parms+1, parm1);
84 if (parm2 != NULL) { call->init_req(TypeFunc::Parms+2, parm2);
85 if (parm3 != NULL) { call->init_req(TypeFunc::Parms+3, parm3);
86 if (parm4 != NULL) { call->init_req(TypeFunc::Parms+4, parm4);
87 if (parm5 != NULL) { call->init_req(TypeFunc::Parms+5, parm5);
88 if (parm6 != NULL) { call->init_req(TypeFunc::Parms+6, parm6);
89 if (parm7 != NULL) { call->init_req(TypeFunc::Parms+7, parm7);
90 /* close each nested if ===> */ } } } } } } } }
91 assert(call->in(call->req()-1) != NULL, "must initialize all parms");
92
93 return call;
|