8129094: assert(is_java_primitive(bt)) failed: only primitive type vectors
authorkvn
Thu, 18 Jun 2015 11:09:29 -0700
changeset 31405 594c1ae9477e
parent 31404 63e8fcd70bfc
child 31406 4121166054b6
8129094: assert(is_java_primitive(bt)) failed: only primitive type vectors Summary: ignored non-primitive type memory operation regardless its (or its inputs) control. Reviewed-by: roland, mcberg
hotspot/src/share/vm/opto/superword.cpp
--- a/hotspot/src/share/vm/opto/superword.cpp	Wed Jun 17 17:48:25 2015 -0700
+++ b/hotspot/src/share/vm/opto/superword.cpp	Thu Jun 18 11:09:29 2015 -0700
@@ -184,18 +184,17 @@
     }
 
     if (n->is_Mem()) {
+      MemNode* current = n->as_Mem();
+      BasicType bt = current->memory_type();
+      if (is_java_primitive(bt) == false) {
+        ignored_loop_nodes[i] = n->_idx;
+        continue;
+      }
       Node* adr = n->in(MemNode::Address);
       Node* n_ctrl = _phase->get_ctrl(adr);
 
       // save a queue of post process nodes
       if (n_ctrl != NULL && lpt()->is_member(_phase->get_loop(n_ctrl))) {
-        MemNode* current = n->as_Mem();
-        BasicType bt = current->memory_type();
-        if (is_java_primitive(bt) == false) {
-          ignored_loop_nodes[i] = n->_idx;
-          continue;
-        }
-
         // Process the memory expression
         int stack_idx = 0;
         bool have_side_effects = true;
@@ -234,8 +233,7 @@
       Node* n = lpt()->_body.at(i);
       if (n->is_Store()) {
         bt = n->as_Mem()->memory_type();
-      }
-      else {
+      } else {
         bt = n->bottom_type()->basic_type();
       }