changeset 9621:b00a25e45cd9

Implement barriers in new C2 intrinsics: multiplyToLen, squareToLen, mulAdd, montgomeryMultiply, montgomerySquare.
author rkennke
date Wed, 16 Sep 2015 17:21:59 +0200
parents 818dd82363ec
children 263be3296c38
files src/share/vm/opto/library_call.cpp
diffstat 1 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/library_call.cpp	Wed Sep 16 17:21:25 2015 +0200
+++ b/src/share/vm/opto/library_call.cpp	Wed Sep 16 17:21:59 2015 +0200
@@ -5179,6 +5179,10 @@
   Node* ylen = argument(3);
   Node* z    = argument(4);
 
+  x = shenandoah_read_barrier(x);
+  y = shenandoah_read_barrier(y);
+  z = shenandoah_write_barrier(z);
+
   const Type* x_type = x->Value(&_gvn);
   const Type* y_type = y->Value(&_gvn);
   const TypeAryPtr* top_x = x_type->isa_aryptr();
@@ -5279,6 +5283,9 @@
   Node* z    = argument(2);
   Node* zlen = argument(3);
 
+  x = shenandoah_read_barrier(x);
+  z = shenandoah_write_barrier(z);
+
   const Type* x_type = x->Value(&_gvn);
   const Type* z_type = z->Value(&_gvn);
   const TypeAryPtr* top_x = x_type->isa_aryptr();
@@ -5326,6 +5333,9 @@
   Node* len      = argument(3);
   Node* k        = argument(4);
 
+  in = shenandoah_read_barrier(in);
+  out = shenandoah_write_barrier(out);
+
   const Type* out_type = out->Value(&_gvn);
   const Type* in_type = in->Value(&_gvn);
   const TypeAryPtr* top_out = out_type->isa_aryptr();
@@ -5375,6 +5385,11 @@
   Node* inv  = argument(4);
   Node* m    = argument(6);
 
+  a = shenandoah_read_barrier(a);
+  b = shenandoah_read_barrier(b);
+  n = shenandoah_read_barrier(n);
+  m = shenandoah_write_barrier(m);
+
   const Type* a_type = a->Value(&_gvn);
   const TypeAryPtr* top_a = a_type->isa_aryptr();
   const Type* b_type = b->Value(&_gvn);
@@ -5434,6 +5449,10 @@
   Node* inv  = argument(3);
   Node* m    = argument(5);
 
+  a = shenandoah_read_barrier(a);
+  n = shenandoah_read_barrier(n);
+  m = shenandoah_write_barrier(m);
+
   const Type* a_type = a->Value(&_gvn);
   const TypeAryPtr* top_a = a_type->isa_aryptr();
   const Type* n_type = a->Value(&_gvn);