Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/macroAssembler_sparc.cpp @ 12955:252d541466ea
8008242: VerifyOops is broken on SPARC
Summary: Fixed displacement issues in SPARC macroassembler and ensure that getClass intrinsic temporary result is T_METADATA
Reviewed-by: kvn, twisti
author | morris |
---|---|
date | Fri, 18 Oct 2013 12:15:32 -0700 |
parents | 69944b868a32 |
children | b4aa8fc5d0d5 |
comparison
equal
deleted
inserted
replaced
12954:e3b736cf4fa3 | 12955:252d541466ea |
---|---|
3331 assert_different_registers(top, t1, t2, t3, G4, G5 /* preserve G4 and G5 */); | 3331 assert_different_registers(top, t1, t2, t3, G4, G5 /* preserve G4 and G5 */); |
3332 Label do_refill, discard_tlab; | 3332 Label do_refill, discard_tlab; |
3333 | 3333 |
3334 if (CMSIncrementalMode || !Universe::heap()->supports_inline_contig_alloc()) { | 3334 if (CMSIncrementalMode || !Universe::heap()->supports_inline_contig_alloc()) { |
3335 // No allocation in the shared eden. | 3335 // No allocation in the shared eden. |
3336 ba_short(slow_case); | 3336 ba(slow_case); |
3337 delayed()->nop(); | |
3337 } | 3338 } |
3338 | 3339 |
3339 ld_ptr(G2_thread, in_bytes(JavaThread::tlab_top_offset()), top); | 3340 ld_ptr(G2_thread, in_bytes(JavaThread::tlab_top_offset()), top); |
3340 ld_ptr(G2_thread, in_bytes(JavaThread::tlab_end_offset()), t1); | 3341 ld_ptr(G2_thread, in_bytes(JavaThread::tlab_end_offset()), t1); |
3341 ld_ptr(G2_thread, in_bytes(JavaThread::tlab_refill_waste_limit_offset()), t2); | 3342 ld_ptr(G2_thread, in_bytes(JavaThread::tlab_refill_waste_limit_offset()), t2); |
3356 // increment number of slow_allocations | 3357 // increment number of slow_allocations |
3357 ld(G2_thread, in_bytes(JavaThread::tlab_slow_allocations_offset()), t2); | 3358 ld(G2_thread, in_bytes(JavaThread::tlab_slow_allocations_offset()), t2); |
3358 add(t2, 1, t2); | 3359 add(t2, 1, t2); |
3359 stw(t2, G2_thread, in_bytes(JavaThread::tlab_slow_allocations_offset())); | 3360 stw(t2, G2_thread, in_bytes(JavaThread::tlab_slow_allocations_offset())); |
3360 } | 3361 } |
3361 ba_short(try_eden); | 3362 ba(try_eden); |
3363 delayed()->nop(); | |
3362 | 3364 |
3363 bind(discard_tlab); | 3365 bind(discard_tlab); |
3364 if (TLABStats) { | 3366 if (TLABStats) { |
3365 // increment number of refills | 3367 // increment number of refills |
3366 ld(G2_thread, in_bytes(JavaThread::tlab_number_of_refills_offset()), t2); | 3368 ld(G2_thread, in_bytes(JavaThread::tlab_number_of_refills_offset()), t2); |
3418 #endif // ASSERT | 3420 #endif // ASSERT |
3419 add(top, t1, top); // t1 is tlab_size | 3421 add(top, t1, top); // t1 is tlab_size |
3420 sub(top, ThreadLocalAllocBuffer::alignment_reserve_in_bytes(), top); | 3422 sub(top, ThreadLocalAllocBuffer::alignment_reserve_in_bytes(), top); |
3421 st_ptr(top, G2_thread, in_bytes(JavaThread::tlab_end_offset())); | 3423 st_ptr(top, G2_thread, in_bytes(JavaThread::tlab_end_offset())); |
3422 verify_tlab(); | 3424 verify_tlab(); |
3423 ba_short(retry); | 3425 ba(retry); |
3426 delayed()->nop(); | |
3424 } | 3427 } |
3425 | 3428 |
3426 void MacroAssembler::incr_allocated_bytes(RegisterOrConstant size_in_bytes, | 3429 void MacroAssembler::incr_allocated_bytes(RegisterOrConstant size_in_bytes, |
3427 Register t1, Register t2) { | 3430 Register t1, Register t2) { |
3428 // Bump total bytes allocated by this thread | 3431 // Bump total bytes allocated by this thread |