comparison src/cpu/x86/vm/graalRuntime_x86.cpp @ 8489:92d21814cf7b

-Implement WB primitive stub call for G1's slow path later
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Tue, 19 Feb 2013 17:57:14 +0100
parents 707e9cca11de
children 1567c6cc6561
comparison
equal deleted inserted replaced
8488:225c984588ee 8489:92d21814cf7b
1190 restore_live_registers(sasm, save_fpu_registers); 1190 restore_live_registers(sasm, save_fpu_registers);
1191 } 1191 }
1192 __ ret(0); 1192 __ ret(0);
1193 break; 1193 break;
1194 } 1194 }
1195 1195 case graal_g1_wb_slow_id: {
1196 case graal_identity_hash_code_id: { 1196 Register obj = j_rarg0;
1197 {
1198 GraalStubFrame f(sasm, "graal_g1_wb_slow", dont_gc_arguments);
1199 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
1200
1201 // note: really a leaf routine but must setup last java sp
1202 // => use call_RT for now (speed can be improved by
1203 // doing last java sp setup manually)
1204 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_g1_wb_slow), obj);
1205
1206 oop_maps = new OopMapSet();
1207 oop_maps->add_gc_map(call_offset, map);
1208 restore_live_registers(sasm, save_fpu_registers);
1209 }
1210 __ ret(0);
1211 break;
1212 }
1213 case graal_identity_hash_code_id: {
1197 Register obj = j_rarg0; // Incoming 1214 Register obj = j_rarg0; // Incoming
1198 __ set_info("identity_hash_code", dont_gc_arguments); 1215 __ set_info("identity_hash_code", dont_gc_arguments);
1199 __ enter(); 1216 __ enter();
1200 OopMap* map = save_live_registers(sasm, 1); 1217 OopMap* map = save_live_registers(sasm, 1);
1201 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_identity_hash_code), obj); 1218 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_identity_hash_code), obj);