comparison src/cpu/x86/vm/c1_Runtime1_x86.cpp @ 1783:d5d065957597

6953144: Tiered compilation Summary: Infrastructure for tiered compilation support (interpreter + c1 + c2) for 32 and 64 bit. Simple tiered policy implementation. Reviewed-by: kvn, never, phh, twisti
author iveresov
date Fri, 03 Sep 2010 17:51:07 -0700
parents 126ea7725993
children 2d26b0046e0d f95d63e2154a
comparison
equal deleted inserted replaced
1782:f353275af40e 1783:d5d065957597
1066 // rax,: new instance 1066 // rax,: new instance
1067 } 1067 }
1068 1068
1069 break; 1069 break;
1070 1070
1071 #ifdef TIERED
1072 case counter_overflow_id: 1071 case counter_overflow_id:
1073 { 1072 {
1074 Register bci = rax; 1073 Register bci = rax, method = rbx;
1075 __ enter(); 1074 __ enter();
1076 OopMap* map = save_live_registers(sasm, 2); 1075 OopMap* map = save_live_registers(sasm, 3);
1077 // Retrieve bci 1076 // Retrieve bci
1078 __ movl(bci, Address(rbp, 2*BytesPerWord)); 1077 __ movl(bci, Address(rbp, 2*BytesPerWord));
1079 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, counter_overflow), bci); 1078 // And a pointer to the methodOop
1079 __ movptr(method, Address(rbp, 3*BytesPerWord));
1080 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, counter_overflow), bci, method);
1080 oop_maps = new OopMapSet(); 1081 oop_maps = new OopMapSet();
1081 oop_maps->add_gc_map(call_offset, map); 1082 oop_maps->add_gc_map(call_offset, map);
1082 restore_live_registers(sasm); 1083 restore_live_registers(sasm);
1083 __ leave(); 1084 __ leave();
1084 __ ret(0); 1085 __ ret(0);
1085 } 1086 }
1086 break; 1087 break;
1087 #endif // TIERED
1088 1088
1089 case new_type_array_id: 1089 case new_type_array_id:
1090 case new_object_array_id: 1090 case new_object_array_id:
1091 { 1091 {
1092 Register length = rbx; // Incoming 1092 Register length = rbx; // Incoming