comparison src/share/vm/opto/superword.cpp @ 1585:49fac4acd688

6958485: fix for 6879921 was insufficient Reviewed-by: kvn
author never
date Mon, 07 Jun 2010 14:17:01 -0700
parents c18cbe5936b8
children 6027dddc26c6
comparison
equal deleted inserted replaced
1584:b812ff5abc73 1585:49fac4acd688
1 /* 1 /*
2 * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
512 //------------------------------are_adjacent_refs--------------------------- 512 //------------------------------are_adjacent_refs---------------------------
513 // Is s1 immediately before s2 in memory? 513 // Is s1 immediately before s2 in memory?
514 bool SuperWord::are_adjacent_refs(Node* s1, Node* s2) { 514 bool SuperWord::are_adjacent_refs(Node* s1, Node* s2) {
515 if (!s1->is_Mem() || !s2->is_Mem()) return false; 515 if (!s1->is_Mem() || !s2->is_Mem()) return false;
516 if (!in_bb(s1) || !in_bb(s2)) return false; 516 if (!in_bb(s1) || !in_bb(s2)) return false;
517
518 // Do not use superword for non-primitives
519 if (!is_java_primitive(s1->as_Mem()->memory_type()) ||
520 !is_java_primitive(s2->as_Mem()->memory_type())) {
521 return false;
522 }
523
517 // FIXME - co_locate_pack fails on Stores in different mem-slices, so 524 // FIXME - co_locate_pack fails on Stores in different mem-slices, so
518 // only pack memops that are in the same alias set until that's fixed. 525 // only pack memops that are in the same alias set until that's fixed.
519 if (_phase->C->get_alias_index(s1->as_Mem()->adr_type()) != 526 if (_phase->C->get_alias_index(s1->as_Mem()->adr_type()) !=
520 _phase->C->get_alias_index(s2->as_Mem()->adr_type())) 527 _phase->C->get_alias_index(s2->as_Mem()->adr_type()))
521 return false; 528 return false;