RFR: 8183546: [MVT] cleanup/improve vreturn convention implementation

Roland Westrelin rwestrel at redhat.com
Wed Jul 5 07:33:19 UTC 2017


This patch:

- reworks the verification logic in
  SharedRuntime::store_value_type_fields_to_buf() to address the crash
  that Paul encountered

- changes the vreturn convention so if we return the klass pointer +
  fields, the klass pointer is tagged by setting its least significant
  bit. This way it's cheaper for the caller to detect if it's getting an
  oop, a buffered value or a list of fields back from the callee. (this
  is based on a discussion with Fred)

- stores precomputed extended signature and vreturn registers in the
  ValueKlass to not have to compute them every time they are
  needed. This is also something Fred suggested. I considered
  initializaing those fields on first use but came to the conclusion it
  would make things too complicated. For instance the vreturn registers
  are sometimes use at a point where the thread can't safepoint making
  it impossible to use a metadata Array.


More information about the valhalla-dev mailing list