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