RFR(M): 8209134: [lworld] New nmethod entry point for unscalarized (nullable) value type arguments

Tobias Hartmann tobias.hartmann at oracle.com
Thu Aug 30 13:22:09 UTC 2018


Hi Roland,

thanks for the review!

On 29.08.2018 16:04, Roland Westrelin wrote:
> Why move things around in nmethod::print_nmethod_labels()? 

That fixes a bug that also exists in mainline where the parameter list is printed *after* the [Entry
Point] and [Verified Entry Point] labels:

[Entry Point]
[Verified Entry Point]
  # {method} {0x00007f56838251b8} 'testGreater1' '(II)Z' in 'MyTest'
  # parm0:    rsi       = int
  # parm1:    rdx       = int
  #           [sp+0x20]  (sp of caller)
 ;; N1: #	B1 <- B3  Freq: 1

 ;; B1: #	B4 B2 <- BLOCK HEAD IS JUNK   Freq: 1

  0x00007f56984da0c0: mov    %eax,-0x16000(%rsp)

It should look like this:

  # {method} {0x00007f56838251b8} 'testGreater1' '(II)Z' in 'MyTest'
  # parm0:    rsi       = int
  # parm1:    rdx       = int
  #           [sp+0x20]  (sp of caller)
 ;; N1: #	B1 <- B3  Freq: 1

 ;; B1: #	B4 B2 <- BLOCK HEAD IS JUNK   Freq: 1
[Entry Point]
[Verified Entry Point]
  0x00007f56984da0c0: mov    %eax,-0x16000(%rsp)

> Why is the Q showing up in signature.cpp?

Because I've modified the code in sharedRuntime_x86_64.cpp to now also save the extended signature
if a value type argument is passed as oop. That's required because we need the extended signature in
MacroAssembler::null_check_value_args() to determine which arguments are value type oops.

Thanks,
Tobias



More information about the valhalla-dev mailing list