Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 3899:c124e2e7463e
7083786: dead various dead chunks of code
Reviewed-by: iveresov, kvn
author | never |
---|---|
date | Wed, 31 Aug 2011 16:46:11 -0700 |
parents | 28263a73ebfb |
children | f08d439fab8c |
comparison
equal
deleted
inserted
replaced
3898:a64d352d1118 | 3899:c124e2e7463e |
---|---|
127 | 127 |
128 LIR_Opr LIR_Assembler::receiverOpr() { | 128 LIR_Opr LIR_Assembler::receiverOpr() { |
129 return FrameMap::receiver_opr; | 129 return FrameMap::receiver_opr; |
130 } | 130 } |
131 | 131 |
132 LIR_Opr LIR_Assembler::incomingReceiverOpr() { | |
133 return receiverOpr(); | |
134 } | |
135 | |
136 LIR_Opr LIR_Assembler::osrBufferPointer() { | 132 LIR_Opr LIR_Assembler::osrBufferPointer() { |
137 return FrameMap::as_pointer_opr(receiverOpr()->as_register()); | 133 return FrameMap::as_pointer_opr(receiverOpr()->as_register()); |
138 } | 134 } |
139 | 135 |
140 //--------------fpu register translations----------------------- | 136 //--------------fpu register translations----------------------- |
368 PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id); | 364 PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id); |
369 __ movoop(reg, o); | 365 __ movoop(reg, o); |
370 patching_epilog(patch, lir_patch_normal, reg, info); | 366 patching_epilog(patch, lir_patch_normal, reg, info); |
371 } | 367 } |
372 | 368 |
373 | |
374 void LIR_Assembler::monitorexit(LIR_Opr obj_opr, LIR_Opr lock_opr, Register new_hdr, int monitor_no, Register exception) { | |
375 if (exception->is_valid()) { | |
376 // preserve exception | |
377 // note: the monitor_exit runtime call is a leaf routine | |
378 // and cannot block => no GC can happen | |
379 // The slow case (MonitorAccessStub) uses the first two stack slots | |
380 // ([esp+0] and [esp+4]), therefore we store the exception at [esp+8] | |
381 __ movptr (Address(rsp, 2*wordSize), exception); | |
382 } | |
383 | |
384 Register obj_reg = obj_opr->as_register(); | |
385 Register lock_reg = lock_opr->as_register(); | |
386 | |
387 // setup registers (lock_reg must be rax, for lock_object) | |
388 assert(obj_reg != SYNC_header && lock_reg != SYNC_header, "rax, must be available here"); | |
389 Register hdr = lock_reg; | |
390 assert(new_hdr == SYNC_header, "wrong register"); | |
391 lock_reg = new_hdr; | |
392 // compute pointer to BasicLock | |
393 Address lock_addr = frame_map()->address_for_monitor_lock(monitor_no); | |
394 __ lea(lock_reg, lock_addr); | |
395 // unlock object | |
396 MonitorAccessStub* slow_case = new MonitorExitStub(lock_opr, true, monitor_no); | |
397 // _slow_case_stubs->append(slow_case); | |
398 // temporary fix: must be created after exceptionhandler, therefore as call stub | |
399 _slow_case_stubs->append(slow_case); | |
400 if (UseFastLocking) { | |
401 // try inlined fast unlocking first, revert to slow locking if it fails | |
402 // note: lock_reg points to the displaced header since the displaced header offset is 0! | |
403 assert(BasicLock::displaced_header_offset_in_bytes() == 0, "lock_reg must point to the displaced header"); | |
404 __ unlock_object(hdr, obj_reg, lock_reg, *slow_case->entry()); | |
405 } else { | |
406 // always do slow unlocking | |
407 // note: the slow unlocking code could be inlined here, however if we use | |
408 // slow unlocking, speed doesn't matter anyway and this solution is | |
409 // simpler and requires less duplicated code - additionally, the | |
410 // slow unlocking code is the same in either case which simplifies | |
411 // debugging | |
412 __ jmp(*slow_case->entry()); | |
413 } | |
414 // done | |
415 __ bind(*slow_case->continuation()); | |
416 | |
417 if (exception->is_valid()) { | |
418 // restore exception | |
419 __ movptr (exception, Address(rsp, 2 * wordSize)); | |
420 } | |
421 } | |
422 | 369 |
423 // This specifies the rsp decrement needed to build the frame | 370 // This specifies the rsp decrement needed to build the frame |
424 int LIR_Assembler::initial_frame_size_in_bytes() { | 371 int LIR_Assembler::initial_frame_size_in_bytes() { |
425 // if rounding, must let FrameMap know! | 372 // if rounding, must let FrameMap know! |
426 | 373 |