106 Node *adr = basic_plus_adr( local_addrs_base, local_addrs, -index*wordSize ); |
106 Node *adr = basic_plus_adr( local_addrs_base, local_addrs, -index*wordSize ); |
107 Node *ctl = control(); |
107 Node *ctl = control(); |
108 |
108 |
109 // Very similar to LoadNode::make, except we handle un-aligned longs and |
109 // Very similar to LoadNode::make, except we handle un-aligned longs and |
110 // doubles on Sparc. Intel can handle them just fine directly. |
110 // doubles on Sparc. Intel can handle them just fine directly. |
111 Node *l; |
111 Node *l = NULL; |
112 switch (bt) { // Signature is flattened |
112 switch (bt) { // Signature is flattened |
113 case T_INT: l = new LoadINode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeInt::INT, MemNode::unordered); break; |
113 case T_INT: l = new LoadINode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeInt::INT, MemNode::unordered); break; |
114 case T_FLOAT: l = new LoadFNode(ctl, mem, adr, TypeRawPtr::BOTTOM, Type::FLOAT, MemNode::unordered); break; |
114 case T_FLOAT: l = new LoadFNode(ctl, mem, adr, TypeRawPtr::BOTTOM, Type::FLOAT, MemNode::unordered); break; |
115 case T_ADDRESS: l = new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM, MemNode::unordered); break; |
115 case T_ADDRESS: l = new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM, MemNode::unordered); break; |
116 case T_OBJECT: l = new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeInstPtr::BOTTOM, MemNode::unordered); break; |
116 case T_OBJECT: l = new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeInstPtr::BOTTOM, MemNode::unordered); break; |
1901 } |
1901 } |
1902 |
1902 |
1903 // Now use a Phi here for merging |
1903 // Now use a Phi here for merging |
1904 assert(!nocreate, "Cannot build a phi for a block already parsed."); |
1904 assert(!nocreate, "Cannot build a phi for a block already parsed."); |
1905 const JVMState* jvms = map->jvms(); |
1905 const JVMState* jvms = map->jvms(); |
1906 const Type* t; |
1906 const Type* t = NULL; |
1907 if (jvms->is_loc(idx)) { |
1907 if (jvms->is_loc(idx)) { |
1908 t = block()->local_type_at(idx - jvms->locoff()); |
1908 t = block()->local_type_at(idx - jvms->locoff()); |
1909 } else if (jvms->is_stk(idx)) { |
1909 } else if (jvms->is_stk(idx)) { |
1910 t = block()->stack_type_at(idx - jvms->stkoff()); |
1910 t = block()->stack_type_at(idx - jvms->stkoff()); |
1911 } else if (jvms->is_mon(idx)) { |
1911 } else if (jvms->is_mon(idx)) { |