< prev index next >

src/share/vm/runtime/frame.cpp

Print this page

        

*** 965,974 **** --- 965,975 ---- } virtual void handle_oop_offset() { // Extract low order register number from register array. // In LP64-land, the high-order bits are valid but unhelpful. + assert(_offset < _arg_size, "out of bounds"); VMReg reg = _regs[_offset].first(); oop *loc = _fr.oopmapreg_to_location(reg, _reg_map); _f->do_oop(loc); }
*** 981,995 **** _offset = 0; _has_receiver = has_receiver; _has_appendix = has_appendix; _fr = fr; _reg_map = (RegisterMap*)reg_map; ! _arg_size = ArgumentSizeComputer(signature).size() + (has_receiver ? 1 : 0) + (has_appendix ? 1 : 0); ! ! int arg_size; ! _regs = SharedRuntime::find_callee_arguments(signature, has_receiver, has_appendix, &arg_size); ! assert(arg_size == _arg_size, "wrong arg size"); } void oops_do() { if (_has_receiver) { handle_oop_offset(); --- 982,992 ---- _offset = 0; _has_receiver = has_receiver; _has_appendix = has_appendix; _fr = fr; _reg_map = (RegisterMap*)reg_map; ! _regs = SharedRuntime::find_callee_arguments(signature, has_receiver, has_appendix, &_arg_size); } void oops_do() { if (_has_receiver) { handle_oop_offset();
< prev index next >