comparison src/share/vm/opto/superword.cpp @ 987:00977607da34

6879921: CTW failure jdk6_18/hotspot/src/share/vm/utilities/globalDefinitions.cpp:268 Summary: filter out non-primitives before deciding whether two ops can be packed Reviewed-by: kvn, never
author cfang
date Tue, 15 Sep 2009 11:09:34 -0700
parents 685e959d09ea
children 73a726751507
comparison
equal deleted inserted replaced
986:62001a362ce9 987:00977607da34
471 471
472 //------------------------------stmts_can_pack--------------------------- 472 //------------------------------stmts_can_pack---------------------------
473 // Can s1 and s2 be in a pack with s1 immediately preceding s2 and 473 // Can s1 and s2 be in a pack with s1 immediately preceding s2 and
474 // s1 aligned at "align" 474 // s1 aligned at "align"
475 bool SuperWord::stmts_can_pack(Node* s1, Node* s2, int align) { 475 bool SuperWord::stmts_can_pack(Node* s1, Node* s2, int align) {
476
477 // Do not use superword for non-primitives
478 if((s1->is_Mem() && !is_java_primitive(s1->as_Mem()->memory_type())) ||
479 (s2->is_Mem() && !is_java_primitive(s2->as_Mem()->memory_type())))
480 return false;
481
476 if (isomorphic(s1, s2)) { 482 if (isomorphic(s1, s2)) {
477 if (independent(s1, s2)) { 483 if (independent(s1, s2)) {
478 if (!exists_at(s1, 0) && !exists_at(s2, 1)) { 484 if (!exists_at(s1, 0) && !exists_at(s2, 1)) {
479 if (!s1->is_Mem() || are_adjacent_refs(s1, s2)) { 485 if (!s1->is_Mem() || are_adjacent_refs(s1, s2)) {
480 int s1_align = alignment(s1); 486 int s1_align = alignment(s1);