hotspot/src/cpu/arm/vm/interp_masm_arm.hpp
changeset 44093 e22e0d071bf9
parent 44088 fb5421685295
child 46338 e84b501fa52e
child 44406 a46a6c4d1dd9
--- a/hotspot/src/cpu/arm/vm/interp_masm_arm.hpp	Mon Feb 27 17:36:36 2017 +0100
+++ b/hotspot/src/cpu/arm/vm/interp_masm_arm.hpp	Thu Mar 02 17:46:59 2017 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -146,6 +146,27 @@
 
   void set_card(Register card_table_base, Address card_table_addr, Register tmp);
 
+#if INCLUDE_ALL_GCS
+  // G1 pre-barrier.
+  // Blows all volatile registers (R0-R3 on 32-bit ARM, R0-R18 on AArch64, Rtemp, LR).
+  // If store_addr != noreg, then previous value is loaded from [store_addr];
+  // in such case store_addr and new_val registers are preserved;
+  // otherwise pre_val register is preserved.
+  void g1_write_barrier_pre(Register store_addr,
+                            Register new_val,
+                            Register pre_val,
+                            Register tmp1,
+                            Register tmp2);
+
+  // G1 post-barrier.
+  // Blows all volatile registers (R0-R3 on 32-bit ARM, R0-R18 on AArch64, Rtemp, LR).
+  void g1_write_barrier_post(Register store_addr,
+                             Register new_val,
+                             Register tmp1,
+                             Register tmp2,
+                             Register tmp3);
+#endif // INCLUDE_ALL_GCS
+
   void pop_ptr(Register r);
   void pop_i(Register r = R0_tos);
 #ifdef AARCH64