[Exp] First prototype of new acmp bytecode
John Rose
john.r.rose at oracle.com
Wed Feb 21 21:04:58 UTC 2018
That's very clever, I like it!
You might even be able to get rid of the special node type (arity=3),
if the cases where CmpP sees a derived oop can be recognized
as perturbations. I don't think we do CmpP on derived oops in
any other circumstance (no C-style pointer/limit loops).
On Feb 21, 2018, at 7:58 AM, Tobias Hartmann <tobias.hartmann at oracle.com> wrote:
>
> ...
> I've quickly prototyped this. Here's an example of a perturbed oop in R11 being live over a call to
> Test::myMethod and being treated as [8]=Derived_oop_[0] in the oop map. It's then re-used in the cmp
> at line 103:
>
> 03b movl R11, [RDX + #8 (8-bit)] # compressed klass ptr
> 03f movq R10, R11 # ptr -> long
> 042 andq R10, #1 # long
> 046 movq R11, RDX # spill
> 049 addq R11, R10 # ptr
> 04c cmpq R11, RCX # ptr
> 04f jne,us B5 P=0,519876 C=23319,000000
> [...]
> 05b movq [rsp + #8], R11 # spill
> 060 movq [rsp + #0], RDX # spill
> nop # 3 bytes pad for loops and calls
> 067 call,static Test::myMethod
> # Test::testEq01_1 @ bci:14 L[0]=RBP L[1]=rsp + #0 L[2]=_
> # OopMap{rbp=Oop [0]=Oop [8]=Derived_oop_[0] off=108}
> [...]
> 103 cmpq R11, R10 # ptr
>
> I still have to sort out some issues (escape analysis isn't happy) but a new webrev will come soon.
>
> Thanks,
> Tobias
More information about the valhalla-dev
mailing list