I am analyzing the following Java code:
    
    class Main {
    
    private static class C{
        private C ref;
    }


    private static void foo(C c, C c2){
       c.ref = c2;
    }
    }






And JITed version of it:

  
  [Entry Point]
    [Verified Entry Point]
    [Constants]
      # {method} {0x00007ff5b3c02af8} 'foo' '(LMain$C;LMain$C;)V' in 'Main'
      # parm0:    rsi:rsi   = 'Main$C'
      # parm1:    rdx:rdx   = 'Main$C'
      #           [sp+0x50]  (sp of caller)
      0x00007ff5c110cc60: mov    %eax,-0x14000(%rsp)
      0x00007ff5c110cc67: push   %rbp
      0x00007ff5c110cc68: sub    $0x40,%rsp
      0x00007ff5c110cc6c: mov    $0x7ff5b3c03200,%rdi  ; What is value the 
$0x7ff5b3c03200? (1)
      0x00007ff5c110cc76: mov    0x8(%rdi),%ebx
      0x00007ff5c110cc79: add    $0x8,%ebx
      0x00007ff5c110cc7c: mov    %ebx,0x8(%rdi)
      0x00007ff5c110cc7f: mov    $0x7ff5b3c02af8,%rdi  ;   {metadata({method
} {0x00007ff5b3c02af8} 'foo' '(LMain$C;LMain$C;)V' in 'Main')}
      0x00007ff5c110cc89: and    $0x3ff8,%ebx          ; What is the value 
$0x3ff8 (2)
      0x00007ff5c110cc8f: cmp    $0x0,%ebx
      0x00007ff5c110cc92: je     0x00007ff5c110ccc1  ;*aload_0
                                                    ; - Main::foo@0 (line 11
)
    
      0x00007ff5c110cc98: mov    %rdx,%r10
      0x00007ff5c110cc9b: shr    $0x3,%r10          ; Why a param1(reference 
to c2) is shifted right by 3? (3)
      0x00007ff5c110cc9f: mov    %r10d,0xc(%rsi)    ; implicit exception: 
dispatches to 0x00007ff5c110ccd5
      0x00007ff5c110cca3: shr    $0x9,%rsi
      0x00007ff5c110cca7: mov    $0x7ff5d13bd000,%rdi
      0x00007ff5c110ccb1: movb   $0x0,(%rsi,%rdi,1)  ;*putfield ref
                                                    ; - Main$C::access$002@3 
(line 6)
                                                    ; - Main::foo@2 (line 11
)
    
      0x00007ff5c110ccb5: add    $0x40,%rsp
      0x00007ff5c110ccb9: pop    %rbp
      0x00007ff5c110ccba: test   %eax,0x17d2c440(%rip)        # 
0x00007ff5d8e39100   What is a constant 0x17d2c440?
                                                    ;   {poll_return}
      0x00007ff5c110ccc0: retq   
      0x00007ff5c110ccc1: mov    %rdi,0x8(%rsp)
      0x00007ff5c110ccc6: movq   $0xffffffffffffffff,(%rsp)
      0x00007ff5c110ccce: callq  0x00007ff5c1101560  ; OopMap{rsi=Oop rdx=
Oop off=115}
                                                    ;*synchronization entry
                                                    ; - Main::foo@-1 (line 
11)
                                                    ;   {runtime_call}
      0x00007ff5c110ccd3: jmp    0x00007ff5c110cc98
      0x00007ff5c110ccd5: callq  0x00007ff5c106f7c0  ; OopMap{rsi=Oop off=
122}
                                                    ;*putfield ref
                                                    ; - Main$C::access$002@3 
(line 6)
                                                    ; - Main::foo@2 (line 11
)
                                                    ;   {runtime_call}
      0x00007ff5c110ccda: nop    
      0x00007ff5c110ccdb: nop    
      0x00007ff5c110ccdc: mov    0x290(%r15),%rax
      0x00007ff5c110cce3: mov    $0x0,%r10
      0x00007ff5c110cced: mov    %r10,0x290(%r15)
      0x00007ff5c110ccf4: mov    $0x0,%r10
      0x00007ff5c110ccfe: mov    %r10,0x298(%r15)
      0x00007ff5c110cd05: add    $0x40,%rsp
      0x00007ff5c110cd09: pop    %rbp
      0x00007ff5c110cd0a: jmpq   0x00007ff5c106e3e0  ;   {runtime_call}
      



I don't understand some issues, and I would like to someone ask for it:

I've annotated line in the assembly code with numbers. For example, 
The first question (1.) refers to the line annotated with (1). And so on.

1. What is value the $0x7ff5b3c03200?
2. What is the value $0x3ff8?
3. Why a param1(reference to c2) is shifted right by 3?


Thanks in advance :)

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to