Mercurial > hg > graal-jvmci-8
diff 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 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/graalRuntime_x86.cpp Thu Feb 28 17:39:48 2013 +0100 +++ b/src/cpu/x86/vm/graalRuntime_x86.cpp Mon Mar 04 16:46:37 2013 +0100 @@ -1195,17 +1195,17 @@ case graal_wb_pre_call_id: { Register obj = j_rarg0; { - // GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments); - //OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); + GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments); + OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); // note: really a leaf routine but must setup last java sp // => use call_RT for now (speed can be improved by // doing last java sp setup manually) int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_wb_pre_call), obj); - //oop_maps = new OopMapSet(); - //oop_maps->add_gc_map(call_offset, map); - //restore_live_registers(sasm, save_fpu_registers); + oop_maps = new OopMapSet(); + oop_maps->add_gc_map(call_offset, map); + restore_live_registers(sasm, save_fpu_registers); } __ ret(0); break; @@ -1213,21 +1213,39 @@ case graal_wb_post_call_id: { Register obj = j_rarg0; { - // GraalStubFrame f(sasm, "graal_wb_post_call", dont_gc_arguments); - //OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); + GraalStubFrame f(sasm, "graal_wb_post_call", dont_gc_arguments); + OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); // note: really a leaf routine but must setup last java sp // => use call_RT for now (speed can be improved by // doing last java sp setup manually) int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_wb_post_call), obj); - //oop_maps = new OopMapSet(); - //oop_maps->add_gc_map(call_offset, map); - // restore_live_registers(sasm, save_fpu_registers); + oop_maps = new OopMapSet(); + oop_maps->add_gc_map(call_offset, map); + restore_live_registers(sasm, save_fpu_registers); } __ ret(0); break; } + case graal_ver_oop_id: { + Register obj = j_rarg0; + { + GraalStubFrame f(sasm, "graal_wb_post_call", dont_gc_arguments); + OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); + + // note: really a leaf routine but must setup last java sp + // => use call_RT for now (speed can be improved by + // doing last java sp setup manually) + int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, graal_ver_oop), obj); + + oop_maps = new OopMapSet(); + oop_maps->add_gc_map(call_offset, map); + restore_live_registers(sasm, save_fpu_registers); + } + __ ret(0); + break; + } case graal_identity_hash_code_id: { Register obj = j_rarg0; // Incoming __ set_info("identity_hash_code", dont_gc_arguments);