changeset 9068:b2000ea410b0 jdk8u212-b04

8221355: Performance regression after JDK-8155635 backport into 8u Reviewed-by: shade, roland
author sgehwolf
date Wed, 10 Apr 2019 11:38:47 +0200
parents 865b7735e833
children c800dc44e4aa 2269f0d51ac0
files src/share/vm/opto/library_call.cpp
diffstat 1 files changed, 4 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/library_call.cpp	Wed Apr 03 05:15:08 2019 +0100
+++ b/src/share/vm/opto/library_call.cpp	Wed Apr 10 11:38:47 2019 +0200
@@ -2608,9 +2608,10 @@
   Node* offset = top();
   Node* val;
 
+  // The base is either a Java object or a value produced by Unsafe.staticFieldBase
+  Node* base = argument(1);  // type: oop
+
   if (!is_native_ptr) {
-    // The base is either a Java object or a value produced by Unsafe.staticFieldBase
-    Node* base = argument(1);  // type: oop
     // The offset is a value produced by Unsafe.staticFieldOffset or Unsafe.objectFieldOffset
     offset = argument(2);  // type: long
     // We currently rely on the cookies produced by Unsafe.xxxFieldOffset
@@ -2630,9 +2631,7 @@
     val = is_store ? argument(3) : NULL;
   }
 
-  // Can base be NULL? Otherwise, always on-heap access.
-  bool can_access_non_heap = TypePtr::NULL_PTR->higher_equal(_gvn.type(heap_base_oop));
-  if (can_access_non_heap && type == T_OBJECT) {
+  if ((_gvn.type(base)->isa_ptr() == TypePtr::NULL_PTR) && type == T_OBJECT) {
     return false; // off-heap oop accesses are not supported
   }