--- old/src/share/vm/opto/phaseX.cpp 2016-01-14 16:04:46.654237807 +0100 +++ new/src/share/vm/opto/phaseX.cpp 2016-01-14 16:04:46.582237810 +0100 @@ -26,6 +26,7 @@ #include "memory/allocation.inline.hpp" #include "opto/block.hpp" #include "opto/callnode.hpp" +#include "opto/castnode.hpp" #include "opto/cfgnode.hpp" #include "opto/idealGraphPrinter.hpp" #include "opto/loopnode.hpp" @@ -1412,6 +1413,12 @@ if (dead->is_expensive()) { C->remove_expensive_node(dead); } +#ifdef _LP64 + CastIINode* cast = dead->isa_CastII(); + if (cast != NULL && cast->has_range_check()) { + C->remove_range_check_cast(cast); + } +#endif } } // while (_stack.is_nonempty()) }