Mercurial > hg > truffle
comparison src/share/vm/c1/c1_LIRGenerator.cpp @ 4970:33df1aeaebbf
Merge with http://hg.openjdk.java.net/hsx/hsx24/hotspot/
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 27 Feb 2012 13:10:13 +0100 |
parents | 04b9a2566eec 701a83c86f28 |
children | 957c266d8bc5 |
comparison
equal
deleted
inserted
replaced
4703:2cfb7fb2dce7 | 4970:33df1aeaebbf |
---|---|
1254 CodeEmitInfo* info = NULL; | 1254 CodeEmitInfo* info = NULL; |
1255 if (x->needs_null_check()) { | 1255 if (x->needs_null_check()) { |
1256 info = state_for(x); | 1256 info = state_for(x); |
1257 } | 1257 } |
1258 __ move(new LIR_Address(rcvr.result(), oopDesc::klass_offset_in_bytes(), T_OBJECT), result, info); | 1258 __ move(new LIR_Address(rcvr.result(), oopDesc::klass_offset_in_bytes(), T_OBJECT), result, info); |
1259 __ move_wide(new LIR_Address(result, Klass::java_mirror_offset_in_bytes() + | 1259 __ move_wide(new LIR_Address(result, in_bytes(Klass::java_mirror_offset()), T_OBJECT), result); |
1260 klassOopDesc::klass_part_offset_in_bytes(), T_OBJECT), result); | |
1261 } | 1260 } |
1262 | 1261 |
1263 | 1262 |
1264 // Example: Thread.currentThread() | 1263 // Example: Thread.currentThread() |
1265 void LIRGenerator::do_currentThread(Intrinsic* x) { | 1264 void LIRGenerator::do_currentThread(Intrinsic* x) { |
2349 __ cmp(lir_cond_equal, value, high_key); | 2348 __ cmp(lir_cond_equal, value, high_key); |
2350 __ branch(lir_cond_equal, T_INT, dest); | 2349 __ branch(lir_cond_equal, T_INT, dest); |
2351 } else { | 2350 } else { |
2352 LabelObj* L = new LabelObj(); | 2351 LabelObj* L = new LabelObj(); |
2353 __ cmp(lir_cond_less, value, low_key); | 2352 __ cmp(lir_cond_less, value, low_key); |
2354 __ branch(lir_cond_less, L->label()); | 2353 __ branch(lir_cond_less, T_INT, L->label()); |
2355 __ cmp(lir_cond_lessEqual, value, high_key); | 2354 __ cmp(lir_cond_lessEqual, value, high_key); |
2356 __ branch(lir_cond_lessEqual, T_INT, dest); | 2355 __ branch(lir_cond_lessEqual, T_INT, dest); |
2357 __ branch_destination(L->label()); | 2356 __ branch_destination(L->label()); |
2358 } | 2357 } |
2359 } | 2358 } |
3164 if (result->is_valid()) { | 3163 if (result->is_valid()) { |
3165 __ move(phys_reg, result); | 3164 __ move(phys_reg, result); |
3166 } | 3165 } |
3167 return result; | 3166 return result; |
3168 } | 3167 } |
3168 | |
3169 void LIRGenerator::do_MemBar(MemBar* x) { | |
3170 if (os::is_MP()) { | |
3171 LIR_Code code = x->code(); | |
3172 switch(code) { | |
3173 case lir_membar_acquire : __ membar_acquire(); break; | |
3174 case lir_membar_release : __ membar_release(); break; | |
3175 case lir_membar : __ membar(); break; | |
3176 case lir_membar_loadload : __ membar_loadload(); break; | |
3177 case lir_membar_storestore: __ membar_storestore(); break; | |
3178 case lir_membar_loadstore : __ membar_loadstore(); break; | |
3179 case lir_membar_storeload : __ membar_storeload(); break; | |
3180 default : ShouldNotReachHere(); break; | |
3181 } | |
3182 } | |
3183 } | |
3184 |