comparison src/share/vm/opto/stringopts.cpp @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents 2113136690bc
children 52b4284cb496
comparison
equal deleted inserted replaced
14908:8db6e76cb658 14909:4ca6dc0799b6
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);
1127 } 1126 }
1128 1127
1129 Node* PhaseStringOpts::int_stringSize(GraphKit& kit, Node* arg) { 1128 Node* PhaseStringOpts::int_stringSize(GraphKit& kit, Node* arg) {
1130 RegionNode *final_merge = new (C) RegionNode(3); 1129 RegionNode *final_merge = new (C) RegionNode(3);
1131 kit.gvn().set_type(final_merge, Type::CONTROL); 1130 kit.gvn().set_type(final_merge, Type::CONTROL);
1313 __ LShiftI(q, __ intcon(1)))); 1312 __ LShiftI(q, __ intcon(1))));
1314 Node* m1 = __ SubI(charPos, __ intcon(1)); 1313 Node* m1 = __ SubI(charPos, __ intcon(1));
1315 Node* ch = __ AddI(r, __ intcon('0')); 1314 Node* ch = __ AddI(r, __ intcon('0'));
1316 1315
1317 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR), 1316 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR),
1318 ch, T_CHAR, char_adr_idx, MemNode::unordered); 1317 ch, T_CHAR, char_adr_idx);
1319 1318
1320 1319
1321 IfNode* iff = kit.create_and_map_if(head, __ Bool(__ CmpI(q, __ intcon(0)), BoolTest::ne), 1320 IfNode* iff = kit.create_and_map_if(head, __ Bool(__ CmpI(q, __ intcon(0)), BoolTest::ne),
1322 PROB_FAIR, COUNT_UNKNOWN); 1321 PROB_FAIR, COUNT_UNKNOWN);
1323 Node* ne = __ IfTrue(iff); 1322 Node* ne = __ IfTrue(iff);
1355 final_merge->init_req(1, C->top()); 1354 final_merge->init_req(1, C->top());
1356 final_mem->init_req(1, C->top()); 1355 final_mem->init_req(1, C->top());
1357 } else { 1356 } else {
1358 Node* m1 = __ SubI(charPos, __ intcon(1)); 1357 Node* m1 = __ SubI(charPos, __ intcon(1));
1359 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR), 1358 Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR),
1360 sign, T_CHAR, char_adr_idx, MemNode::unordered); 1359 sign, T_CHAR, char_adr_idx);
1361 1360
1362 final_merge->init_req(1, kit.control()); 1361 final_merge->init_req(1, kit.control());
1363 final_mem->init_req(1, st); 1362 final_mem->init_req(1, st);
1364 } 1363 }
1365 1364
1386 int o = offset->get_int(); 1385 int o = offset->get_int();
1387 const TypeOopPtr* t = kit.gvn().type(value)->isa_oopptr(); 1386 const TypeOopPtr* t = kit.gvn().type(value)->isa_oopptr();
1388 ciTypeArray* value_array = t->const_oop()->as_type_array(); 1387 ciTypeArray* value_array = t->const_oop()->as_type_array();
1389 for (int e = 0; e < c; e++) { 1388 for (int e = 0; e < c; e++) {
1390 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR), 1389 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR),
1391 __ intcon(value_array->char_at(o + e)), T_CHAR, char_adr_idx, 1390 __ intcon(value_array->char_at(o + e)), T_CHAR, char_adr_idx);
1392 MemNode::unordered);
1393 start = __ AddI(start, __ intcon(1)); 1391 start = __ AddI(start, __ intcon(1));
1394 } 1392 }
1395 } else { 1393 } else {
1396 Node* src_ptr = kit.array_element_address(value, offset, T_CHAR); 1394 Node* src_ptr = kit.array_element_address(value, offset, T_CHAR);
1397 Node* dst_ptr = kit.array_element_address(char_array, start, T_CHAR); 1395 Node* dst_ptr = kit.array_element_address(char_array, start, T_CHAR);
1607 start = copy_string(kit, arg, char_array, start); 1605 start = copy_string(kit, arg, char_array, start);
1608 break; 1606 break;
1609 } 1607 }
1610 case StringConcat::CharMode: { 1608 case StringConcat::CharMode: {
1611 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR), 1609 __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR),
1612 arg, T_CHAR, char_adr_idx, MemNode::unordered); 1610 arg, T_CHAR, char_adr_idx);
1613 start = __ AddI(start, __ intcon(1)); 1611 start = __ AddI(start, __ intcon(1));
1614 break; 1612 break;
1615 } 1613 }
1616 default: 1614 default:
1617 ShouldNotReachHere(); 1615 ShouldNotReachHere();