Home | History | Annotate | Download | only in x86
      1 %verify "Class already resolved"
      2 %verify "Class not yet resolved"
      3 %verify "Class cannot be resolved"
      4     /* const-class/jumbo vBBBB, Class@AAAAAAAA */
      5     movl      rSELF,%ecx
      6     movl      2(rPC),%eax              # eax<- AAAAAAAA
      7     movl      offThread_methodClassDex(%ecx),%ecx# ecx<- self->methodClassDex
      8     movl      offDvmDex_pResClasses(%ecx),%ecx # ecx<- dvmDex->pResClasses
      9     movl      (%ecx,%eax,4),%eax       # eax<- rResClasses[AAAAAAAA]
     10     FETCH_INST_OPCODE 4 %ecx
     11     testl     %eax,%eax                # resolved yet?
     12     je        .L${opcode}_resolve
     13     SET_VREG  %eax rINST               # vBBBB<- rResClasses[AAAAAAAA]
     14     ADVANCE_PC 4
     15     GOTO_NEXT_R %ecx
     16 
     17 /* This is the less common path, so we'll redo some work
     18    here rather than force spills on the common path */
     19 .L${opcode}_resolve:
     20     movl     rSELF,%eax
     21     EXPORT_PC
     22     movl     offThread_method(%eax),%eax # eax<- self->method
     23     movl     $$1,OUT_ARG2(%esp)        # true
     24     movl     2(rPC),%ecx               # ecx<- AAAAAAAA
     25     movl     offMethod_clazz(%eax),%eax
     26     movl     %ecx,OUT_ARG1(%esp)
     27     movl     %eax,OUT_ARG0(%esp)
     28     SPILL(rIBASE)
     29     call     dvmResolveClass           # go resolve
     30     UNSPILL(rIBASE)
     31     testl    %eax,%eax                 # failed?
     32     je       common_exceptionThrown
     33     FETCH_INST_OPCODE 4 %ecx
     34     SET_VREG %eax rINST
     35     ADVANCE_PC 4
     36     GOTO_NEXT_R %ecx
     37