comparison src/cpu/x86/vm/graalRuntime_x86.cpp @ 8499:96a337d307bd

-More progress in G1 WBs
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Mon, 04 Mar 2013 16:46:37 +0100
parents 96ccefe5ab4e
children ff4fa8b0516e
comparison
equal deleted inserted replaced
8498:c158d128fae9 8499:96a337d307bd
1193 break; 1193 break;
1194 } 1194 }
1195 case graal_wb_pre_call_id: { 1195 case graal_wb_pre_call_id: {
1196 Register obj = j_rarg0; 1196 Register obj = j_rarg0;
1197 { 1197 {
1198 // GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments); 1198 GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments);
1199 //OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); 1199 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
1200 1200
1201 // note: really a leaf routine but must setup last java sp 1201 // note: really a leaf routine but must setup last java sp
1202 // => use call_RT for now (speed can be improved by 1202 // => use call_RT for now (speed can be improved by
1203 // doing last java sp setup manually) 1203 // doing last java sp setup manually)
1204 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_wb_pre_call), obj); 1204 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_wb_pre_call), obj);
1205 1205
1206 //oop_maps = new OopMapSet(); 1206 oop_maps = new OopMapSet();
1207 //oop_maps->add_gc_map(call_offset, map); 1207 oop_maps->add_gc_map(call_offset, map);
1208 //restore_live_registers(sasm, save_fpu_registers); 1208 restore_live_registers(sasm, save_fpu_registers);
1209 } 1209 }
1210 __ ret(0); 1210 __ ret(0);
1211 break; 1211 break;
1212 } 1212 }
1213 case graal_wb_post_call_id: { 1213 case graal_wb_post_call_id: {
1214 Register obj = j_rarg0; 1214 Register obj = j_rarg0;
1215 { 1215 {
1216 // GraalStubFrame f(sasm, "graal_wb_post_call", dont_gc_arguments); 1216 GraalStubFrame f(sasm, "graal_wb_post_call", dont_gc_arguments);
1217 //OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); 1217 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
1218 1218
1219 // note: really a leaf routine but must setup last java sp 1219 // note: really a leaf routine but must setup last java sp
1220 // => use call_RT for now (speed can be improved by 1220 // => use call_RT for now (speed can be improved by
1221 // doing last java sp setup manually) 1221 // doing last java sp setup manually)
1222 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_wb_post_call), obj); 1222 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_wb_post_call), obj);
1223 1223
1224 //oop_maps = new OopMapSet(); 1224 oop_maps = new OopMapSet();
1225 //oop_maps->add_gc_map(call_offset, map); 1225 oop_maps->add_gc_map(call_offset, map);
1226 // restore_live_registers(sasm, save_fpu_registers); 1226 restore_live_registers(sasm, save_fpu_registers);
1227 } 1227 }
1228 __ ret(0); 1228 __ ret(0);
1229 break; 1229 break;
1230 } 1230 }
1231 case graal_ver_oop_id: {
1232 Register obj = j_rarg0;
1233 {
1234 GraalStubFrame f(sasm, "graal_wb_post_call", dont_gc_arguments);
1235 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
1236
1237 // note: really a leaf routine but must setup last java sp
1238 // => use call_RT for now (speed can be improved by
1239 // doing last java sp setup manually)
1240 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_ver_oop), obj);
1241
1242 oop_maps = new OopMapSet();
1243 oop_maps->add_gc_map(call_offset, map);
1244 restore_live_registers(sasm, save_fpu_registers);
1245 }
1246 __ ret(0);
1247 break;
1248 }
1231 case graal_identity_hash_code_id: { 1249 case graal_identity_hash_code_id: {
1232 Register obj = j_rarg0; // Incoming 1250 Register obj = j_rarg0; // Incoming
1233 __ set_info("identity_hash_code", dont_gc_arguments); 1251 __ set_info("identity_hash_code", dont_gc_arguments);
1234 __ enter(); 1252 __ enter();
1235 OopMap* map = save_live_registers(sasm, 1); 1253 OopMap* map = save_live_registers(sasm, 1);