1120 type = Type::get_const_basic_type(bt); |
1120 type = Type::get_const_basic_type(bt); |
1121 } |
1121 } |
1122 |
1122 |
1123 return kit.make_load(NULL, kit.basic_plus_adr(klass_node, field->offset_in_bytes()), |
1123 return kit.make_load(NULL, kit.basic_plus_adr(klass_node, field->offset_in_bytes()), |
1124 type, T_OBJECT, |
1124 type, T_OBJECT, |
1125 C->get_alias_index(mirror_type->add_offset(field->offset_in_bytes()))); |
1125 C->get_alias_index(mirror_type->add_offset(field->offset_in_bytes())), |
|
1126 MemNode::unordered); |
1126 } |
1127 } |
1127 |
1128 |
1128 Node* PhaseStringOpts::int_stringSize(GraphKit& kit, Node* arg) { |
1129 Node* PhaseStringOpts::int_stringSize(GraphKit& kit, Node* arg) { |
1129 RegionNode *final_merge = new (C) RegionNode(3); |
1130 RegionNode *final_merge = new (C) RegionNode(3); |
1130 kit.gvn().set_type(final_merge, Type::CONTROL); |
1131 kit.gvn().set_type(final_merge, Type::CONTROL); |
1312 __ LShiftI(q, __ intcon(1)))); |
1313 __ LShiftI(q, __ intcon(1)))); |
1313 Node* m1 = __ SubI(charPos, __ intcon(1)); |
1314 Node* m1 = __ SubI(charPos, __ intcon(1)); |
1314 Node* ch = __ AddI(r, __ intcon('0')); |
1315 Node* ch = __ AddI(r, __ intcon('0')); |
1315 |
1316 |
1316 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR), |
1317 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR), |
1317 ch, T_CHAR, char_adr_idx); |
1318 ch, T_CHAR, char_adr_idx, MemNode::unordered); |
1318 |
1319 |
1319 |
1320 |
1320 IfNode* iff = kit.create_and_map_if(head, __ Bool(__ CmpI(q, __ intcon(0)), BoolTest::ne), |
1321 IfNode* iff = kit.create_and_map_if(head, __ Bool(__ CmpI(q, __ intcon(0)), BoolTest::ne), |
1321 PROB_FAIR, COUNT_UNKNOWN); |
1322 PROB_FAIR, COUNT_UNKNOWN); |
1322 Node* ne = __ IfTrue(iff); |
1323 Node* ne = __ IfTrue(iff); |
1354 final_merge->init_req(1, C->top()); |
1355 final_merge->init_req(1, C->top()); |
1355 final_mem->init_req(1, C->top()); |
1356 final_mem->init_req(1, C->top()); |
1356 } else { |
1357 } else { |
1357 Node* m1 = __ SubI(charPos, __ intcon(1)); |
1358 Node* m1 = __ SubI(charPos, __ intcon(1)); |
1358 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR), |
1359 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR), |
1359 sign, T_CHAR, char_adr_idx); |
1360 sign, T_CHAR, char_adr_idx, MemNode::unordered); |
1360 |
1361 |
1361 final_merge->init_req(1, kit.control()); |
1362 final_merge->init_req(1, kit.control()); |
1362 final_mem->init_req(1, st); |
1363 final_mem->init_req(1, st); |
1363 } |
1364 } |
1364 |
1365 |
1385 int o = offset->get_int(); |
1386 int o = offset->get_int(); |
1386 const TypeOopPtr* t = kit.gvn().type(value)->isa_oopptr(); |
1387 const TypeOopPtr* t = kit.gvn().type(value)->isa_oopptr(); |
1387 ciTypeArray* value_array = t->const_oop()->as_type_array(); |
1388 ciTypeArray* value_array = t->const_oop()->as_type_array(); |
1388 for (int e = 0; e < c; e++) { |
1389 for (int e = 0; e < c; e++) { |
1389 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR), |
1390 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR), |
1390 __ intcon(value_array->char_at(o + e)), T_CHAR, char_adr_idx); |
1391 __ intcon(value_array->char_at(o + e)), T_CHAR, char_adr_idx, |
|
1392 MemNode::unordered); |
1391 start = __ AddI(start, __ intcon(1)); |
1393 start = __ AddI(start, __ intcon(1)); |
1392 } |
1394 } |
1393 } else { |
1395 } else { |
1394 Node* src_ptr = kit.array_element_address(value, offset, T_CHAR); |
1396 Node* src_ptr = kit.array_element_address(value, offset, T_CHAR); |
1395 Node* dst_ptr = kit.array_element_address(char_array, start, T_CHAR); |
1397 Node* dst_ptr = kit.array_element_address(char_array, start, T_CHAR); |
1605 start = copy_string(kit, arg, char_array, start); |
1607 start = copy_string(kit, arg, char_array, start); |
1606 break; |
1608 break; |
1607 } |
1609 } |
1608 case StringConcat::CharMode: { |
1610 case StringConcat::CharMode: { |
1609 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR), |
1611 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR), |
1610 arg, T_CHAR, char_adr_idx); |
1612 arg, T_CHAR, char_adr_idx, MemNode::unordered); |
1611 start = __ AddI(start, __ intcon(1)); |
1613 start = __ AddI(start, __ intcon(1)); |
1612 break; |
1614 break; |
1613 } |
1615 } |
1614 default: |
1616 default: |
1615 ShouldNotReachHere(); |
1617 ShouldNotReachHere(); |