Mercurial > hg > truffle
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(); |