--- a/hotspot/src/share/vm/opto/loopTransform.cpp Tue May 05 19:27:08 2015 +0200
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp Tue May 05 12:33:57 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1210,6 +1210,16 @@
}
loop->dump_head();
}
+
+ if (C->do_vector_loop() && (PrintOpto && VerifyLoopOptimizations || TraceLoopOpts)) {
+ Arena* arena = Thread::current()->resource_area();
+ Node_Stack stack(arena, C->unique() >> 2);
+ Node_List rpo_list;
+ VectorSet visited(arena);
+ visited.set(loop_head->_idx);
+ rpo( loop_head, stack, visited, rpo_list );
+ dump(loop, rpo_list.size(), rpo_list );
+ }
#endif
// Remember loop node count before unrolling to detect
@@ -1497,6 +1507,30 @@
}
loop->record_for_igvn();
+
+#ifndef PRODUCT
+ if (C->do_vector_loop() && (PrintOpto && VerifyLoopOptimizations || TraceLoopOpts)) {
+ tty->print("\nnew loop after unroll\n"); loop->dump_head();
+ for (uint i = 0; i < loop->_body.size(); i++) {
+ loop->_body.at(i)->dump();
+ }
+ if(C->clone_map().is_debug()) {
+ tty->print("\nCloneMap\n");
+ Dict* dict = C->clone_map().dict();
+ DictI i(dict);
+ tty->print_cr("Dict@%p[%d] = ", dict, dict->Size());
+ for (int ii = 0; i.test(); ++i, ++ii) {
+ NodeCloneInfo cl((uint64_t)dict->operator[]((void*)i._key));
+ tty->print("%d->%d:%d,", (int)(intptr_t)i._key, cl.idx(), cl.gen());
+ if (ii % 10 == 9) {
+ tty->print_cr(" ");
+ }
+ }
+ tty->print_cr(" ");
+ }
+ }
+#endif
+
}
//------------------------------do_maximally_unroll----------------------------