[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