[vector] help on unify load/store access

Paul Sandoz paul.sandoz at oracle.com
Tue May 22 04:37:08 UTC 2018


I think i worked it out, it was something silly, a long value takes two argument slots:

--- a/src/hotspot/share/opto/library_call.cpp	Mon May 21 17:43:59 2018 -0700
+++ b/src/hotspot/share/opto/library_call.cpp	Mon May 21 21:28:42 2018 -0700
@@ -7425,7 +7425,7 @@
   const TypeInstPtr* vbox_type = TypeInstPtr::make_exact(TypePtr::NotNull, vbox_klass);
 
   if (is_store) {
-    Node* val = unbox_vector(argument(5), vbox_type, elem_bt, num_elem);
+    Node* val = unbox_vector(argument(6), vbox_type, elem_bt, num_elem);
     if (val == NULL) {
       return false; // operand unboxing failed
     }

After that all the tests pass.

Updated:

  http://cr.openjdk.java.net/~psandoz/panama/unify-load-store/webrev/

Paul.


> On May 21, 2018, at 6:00 PM, Paul Sandoz <Paul.Sandoz at oracle.com> wrote:
> 
> Hi,
> 
> I started making some progress on unifying load/store access, but i am running into an issue due to my lack of experience with HotSpot.
> 
> Here’s what i have so far, with HS changes based on Al K’s work:
> 
>  http://cr.openjdk.java.net/~psandoz/panama/unify-load-store/webrev/
> 
> (This patches merges in load/store tests.)
> 
> I am getting a crash when the store intrinsic attempts to create an unbox vector node:
> 
> if (is_store) {
>  Node* val = unbox_vector(argument(5), vbox_type, elem_bt, num_elem);
>  if (val == NULL) {
>    return false; // operand unboxing failed
>  }
>  set_all_memory(reset_memory());
> 
> 
> 
> #  Internal Error (/Users/sandoz/Projects/jdk/panama-vector/src/hotspot/share/opto/type.hpp:1659), pid=54022, tid=22275
> #  assert(_base == InstPtr) failed: Not an object pointer
> 
>> 
> V  [libjvm.dylib+0xf3dc17]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x543
> V  [libjvm.dylib+0xf3e3de]  VMError::report_and_die(Thread*, void*, char const*, int, char const*, char const*, __va_list_tag*)+0x4a
> V  [libjvm.dylib+0x6185bd]  report_vm_error(char const*, int, char const*, char const*, ...)+0xd3
> V  [libjvm.dylib+0xb24ec0]  LibraryCallKit::unbox_vector(Node*, TypeInstPtr const*, BasicType, int)+0x6e
> V  [libjvm.dylib+0xb19724]  LibraryCallKit::inline_vector_mem_operation(bool)+0x31c
> V  [libjvm.dylib+0xaf9900]  LibraryCallKit::try_to_inline(int)+0xbfa
> V  [libjvm.dylib+0xaf8a1c]  LibraryIntrinsic::generate(JVMState*)+0x100
> 
> 
> It could be i am doing something really silly and missing something obvious, but AFAICT the argument indexes line up for the changes i made.
> 
> Thanks,
> Paul.



More information about the panama-dev mailing list