• Home
  • Raw
  • Download

Lines Matching full:in

3 AOT compiler mode mainly described in [aot.md](../../docs/aot.md), please read it first.
11 …it's code is much longer than few runtime-call-related instructions mentioned in the section above.
16 … used, as we can cache gathered Method or Class pointer into a slot in GOT table (in `.aot_got` se…
18 or `class Id`. So, in order to reduce code size in AOT mode, more tricky solution with PLT Resolver…
23 consecutive slots are reserved in PLT-GOT table. `FirstSlot` is filled during AOT file creation and…
30 parameters are already in proper registers):
34 ; Somewhere in PLT-GOT table
49 XX+04: ldr x0, [x0] ; Load value stored in ThirdSlot ; (&FirstSlot)-48 ; Method Pointer
56 value in `x0`, so it may load `ldr x1, [x0, #48]` to get `method Id` from `FirstSlot`.
58 having this two values in `x0` and `x1` it just call `GetCalleeMethod` to gather `Method pointer`.
61 parameter in actual method call. Jump by register value operation is used instead of call to return…
67 slots are reserved in PLT-GOT table. `FirstSlot` is filled during AOT file creation and contains `m…
72 ; Somewhere in PLT-GOT table
117 three consecutive slots are reserved in PLT-GOT table. `FirstSlot` is filled during AOT file creati…
119 When `SecondSlot` in non-zero it means that `Class` is known to be in `Initialized` state already.
123 ; Somewhere in PLT-GOT table
146 XX+16: mov w7, w16 ; Class should be in w7
157 …r `Class` state is `Initialized`, as returning from `InitializeClassById` entrypoint in some corner
158 cases can happen when `Class` is yet only in `Initializing` state.
167 As all 4 resolvers have a lot of similar parts, their generation in implemented in one method - `En…
168 Moreover, it is placed in platform-independent file `code_generator/target/target.cpp`, although th…
169 differences in what's happening for `arm64` and `x86_64`.
171 Main difference between two supported platforms is a main temporary register to use in Resolver.
175 in 3 Resolvers (all but CallStatic) is actually a caller-saved for `arm64`, but callee-saved for `x…
178 Lets briefly discuss all steps which happen consecutively in any Resolver:
189 In CallStatic resolver we prepare place on the stack and save registers there. In three other Resol…
190 registers are saved directly into appropriate places in previous CFrame.
191 Stack pointer is temporarily manually adjusted in this case to allow `SaveCallerRegisters` function…
195 This step is described above separately in each resolver description.
202 …`MakeCallAot` function with properly calculated offset. Resolvers are placed after all functions in
203 AOT file, but distance to `.aot_got` section can be calculated in the same way like for usual code …
214 Main logic of this step is described above separately in each resolver description.
217 Registers are loaded in the same manner they were saved. So, in CallStatic we have to adjust stack …
218 while in other Resolvers it is temporarily manually adjusted to previous frame before calling `Load…
224 Jump to the callee Method in `CallStatic` Resolver, and do a usual "return" in others.