< prev index next >

src/cpu/arm/vm/jniFastGetField_arm.cpp

Print this page
rev 12653 : [mq]: fastgetfield
rev 12655 : [mq]: kim-review

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2017, 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
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -117,14 +117,16 @@
 #endif // !AARCH64
 
   __ ldr_s32(Rsafept_cnt, Address(Rsafepoint_counter_addr));
   __ tbnz(Rsafept_cnt, 0, slow_case);
 
-#ifndef AARCH64
-  __ bic(R1, R1, JNIHandles::weak_tag_mask);
-#else
+#ifdef AARCH64
+  // If mask changes we need to ensure that the inverse is still encodable as an immediate
+  STATIC_ASSERT(JNIHandles::weak_tag_mask == 1);
   __ andr(R1, R1, ~JNIHandles::weak_tag_mask);
+#else
+  __ bic(R1, R1, JNIHandles::weak_tag_mask);
 #endif
 
   if (os::is_MP()) {
     // Address dependency restricts memory access ordering. It's cheaper than explicit LoadLoad barrier
     __ andr(Rtmp1, Rsafept_cnt, (unsigned)1);
< prev index next >