diff -r fa0ae17a543e -r 69f942690128 hotspot/src/share/vm/opto/loopTransform.cpp --- 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----------------------------