diff -r b0133e4187d3 -r 15120a36272d src/share/vm/opto/machnode.cpp --- a/src/share/vm/opto/machnode.cpp Thu Nov 21 18:29:34 2013 -0800 +++ b/src/share/vm/opto/machnode.cpp Thu Nov 21 19:00:57 2013 -0800 @@ -397,6 +397,17 @@ return skipped; } +int MachNode::operand_index(const MachOper *oper) const { + uint skipped = oper_input_base(); // Sum of leaves skipped so far + uint opcnt; + for (opcnt = 1; opcnt < num_opnds(); opcnt++) { + if (_opnds[opcnt] == oper) break; + uint num_edges = _opnds[opcnt]->num_edges(); // leaves for operand + skipped += num_edges; + } + if (_opnds[opcnt] != oper) return -1; + return skipped; +} //------------------------------peephole--------------------------------------- // Apply peephole rule(s) to this instruction