Mercurial > hg > truffle
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); |