Mercurial > hg > truffle
comparison src/cpu/x86/vm/assembler_x86.cpp @ 845:df6caf649ff7
6700789: G1: Enable use of compressed oops with G1 heaps
Summary: Modifications to G1 so as to allow the use of compressed oops.
Reviewed-by: apetrusenko, coleenp, jmasa, kvn, never, phh, tonyp
author | ysr |
---|---|
date | Tue, 14 Jul 2009 15:40:39 -0700 |
parents | 93c14e5562c4 |
children | 60fea60a6db5 |
comparison
equal
deleted
inserted
replaced
839:bb18957ad21e | 845:df6caf649ff7 |
---|---|
6803 cmpb(in_progress, 0); | 6803 cmpb(in_progress, 0); |
6804 } | 6804 } |
6805 jcc(Assembler::equal, done); | 6805 jcc(Assembler::equal, done); |
6806 | 6806 |
6807 // if (x.f == NULL) goto done; | 6807 // if (x.f == NULL) goto done; |
6808 cmpptr(Address(obj, 0), NULL_WORD); | 6808 #ifdef _LP64 |
6809 load_heap_oop(tmp2, Address(obj, 0)); | |
6810 #else | |
6811 movptr(tmp2, Address(obj, 0)); | |
6812 #endif | |
6813 cmpptr(tmp2, (int32_t) NULL_WORD); | |
6809 jcc(Assembler::equal, done); | 6814 jcc(Assembler::equal, done); |
6810 | 6815 |
6811 // Can we store original value in the thread's buffer? | 6816 // Can we store original value in the thread's buffer? |
6812 | 6817 |
6813 LP64_ONLY(movslq(tmp, index);) | |
6814 movptr(tmp2, Address(obj, 0)); | |
6815 #ifdef _LP64 | 6818 #ifdef _LP64 |
6819 movslq(tmp, index); | |
6816 cmpq(tmp, 0); | 6820 cmpq(tmp, 0); |
6817 #else | 6821 #else |
6818 cmpl(index, 0); | 6822 cmpl(index, 0); |
6819 #endif | 6823 #endif |
6820 jcc(Assembler::equal, runtime); | 6824 jcc(Assembler::equal, runtime); |
6832 bind(runtime); | 6836 bind(runtime); |
6833 // save the live input values | 6837 // save the live input values |
6834 if(tosca_live) push(rax); | 6838 if(tosca_live) push(rax); |
6835 push(obj); | 6839 push(obj); |
6836 #ifdef _LP64 | 6840 #ifdef _LP64 |
6837 movq(c_rarg0, Address(obj, 0)); | 6841 call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), tmp2, r15_thread); |
6838 call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), c_rarg0, r15_thread); | |
6839 #else | 6842 #else |
6840 push(thread); | 6843 push(thread); |
6841 call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), tmp2, thread); | 6844 call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), tmp2, thread); |
6842 pop(thread); | 6845 pop(thread); |
6843 #endif | 6846 #endif |