equal
deleted
inserted
replaced
63 // faster. |
63 // faster. |
64 Label skip_move; |
64 Label skip_move; |
65 br(Assembler::negative, true, Assembler::pt, skip_move); |
65 br(Assembler::negative, true, Assembler::pt, skip_move); |
66 delayed()->mov(G0, delta); |
66 delayed()->mov(G0, delta); |
67 bind(skip_move); |
67 bind(skip_move); |
68 round_to(delta, WordsPerLong); // make multiple of 2 (SP must be 2-word aligned) |
68 align_up(delta, WordsPerLong); // make multiple of 2 (SP must be 2-word aligned) |
69 sll(delta, LogBytesPerWord, delta); // extra space for locals in bytes |
69 sll(delta, LogBytesPerWord, delta); // extra space for locals in bytes |
70 } |
70 } |
71 |
71 |
72 // Dispatch code executed in the prolog of a bytecode which does not do it's |
72 // Dispatch code executed in the prolog of a bytecode which does not do it's |
73 // own dispatch. The dispatch address is computed and placed in IdispatchAddress |
73 // own dispatch. The dispatch address is computed and placed in IdispatchAddress |
2307 } |
2307 } |
2308 |
2308 |
2309 |
2309 |
2310 int InterpreterMacroAssembler::top_most_monitor_byte_offset() { |
2310 int InterpreterMacroAssembler::top_most_monitor_byte_offset() { |
2311 const jint delta = frame::interpreter_frame_monitor_size() * wordSize; |
2311 const jint delta = frame::interpreter_frame_monitor_size() * wordSize; |
2312 int rounded_vm_local_words = ::round_to(frame::interpreter_frame_vm_local_words, WordsPerLong); |
2312 int rounded_vm_local_words = align_up((int)frame::interpreter_frame_vm_local_words, WordsPerLong); |
2313 return ((-rounded_vm_local_words * wordSize) - delta ) + STACK_BIAS; |
2313 return ((-rounded_vm_local_words * wordSize) - delta ) + STACK_BIAS; |
2314 } |
2314 } |
2315 |
2315 |
2316 |
2316 |
2317 Address InterpreterMacroAssembler::top_most_monitor() { |
2317 Address InterpreterMacroAssembler::top_most_monitor() { |