diff 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
line wrap: on
line diff
--- a/src/cpu/x86/vm/graalRuntime_x86.cpp	Tue Feb 19 16:53:10 2013 +0100
+++ b/src/cpu/x86/vm/graalRuntime_x86.cpp	Tue Feb 19 17:57:14 2013 +0100
@@ -1192,8 +1192,25 @@
       __ ret(0);
       break;
     }
+    case graal_g1_wb_slow_id: {
+          Register obj = j_rarg0;
+          {
+            GraalStubFrame f(sasm, "graal_g1_wb_slow", dont_gc_arguments);
+            OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
 
-    case graal_identity_hash_code_id: {
+            // 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_g1_wb_slow), 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);
       __ enter();