• Home
  • Raw
  • Download

Lines Matching full:and

9 During code generation so-called `SlowPath` code is created, and we put it into a special cold code…
10 …SlowPath` blob is generated for each place it is called, and as it contains saving registers and s…
15 Speaking about AOT mode, for opcodes like `CallStatic`, `CallVirtual`, and opcodes related to `Clas…
22 For each pair of File (input for `ark_aot` compiler) and callee `method Id` (`panda_file::File::Ent…
23 consecutive slots are reserved in PLT-GOT table. `FirstSlot` is filled during AOT file creation and
24 `SecondSlot` is filled during AOT file loading into runtime and contains `PLT CallStatic Resolver` …
55 `PLT CallStatic Resolver` after saving all registers to the stack and `BoundaryFrame` generation, h…
58 having this two values in `x0` and `x1` it just call `GetCalleeMethod` to gather `Method pointer`.
60 …pointer`, it is stored into `ThirdSlot`, allow to load proper executable address, and goes as first
66 For each pair of File (input for `ark_aot` compiler) and callee `method Id` (`panda_file::File::Ent…
67 slots are reserved in PLT-GOT table. `FirstSlot` is filled during AOT file creation and contains `m…
68 `SecondSlot` is filled with zero and after resolving it stores `VTable index` incremented by 1.
90 XX+20: blr x30 ; Call Resolver, x16 is like a "parameter" and "return value"
105 (`x16` for `arm64` or `r12` for `x86_84`) is a parameter with `SecondSlot` address and also the sam…
109 takes caller `Method pointer` from previous frame and calls `GetCalleeMethod` entrypoint.
111 Resolver returns `index+1` value using `x16`, and don't call any other functions like `PLT CallStat…
114 ## Class and InitClass Resolvers
116 For each pair of File (input for `ark_aot` compiler) and `class Id` (`panda_file::File::EntityId`) …
117 … reserved in PLT-GOT table. `FirstSlot` is filled during AOT file creation and contains `class Id`.
118 `SecondSlot` and `ThirdSlot` are filled with zeroes and after resolving they both store `Class poin…
139 YY+04: br x17 ; Jump to resolver, x16 works like a "parameter" and "re…
145 … ; Call shared slow path for PLT resolver, x16 works like a "parameter" and "return value"
152 (`x16` for `arm64` or `r12` for `x86_84`) is a parameter with Slot address, and it is also used as …
155 takes caller `Method pointer` from previous frame and calls `InitializeClassById` entrypoint.
156 It stores gathered `Class pointer` into `ThirdSlot`, and also does the same for `SecondSlot` but un…
169 differences in what's happening for `arm64` and `x86_64`.
172 For `arm64` we use `LR` register (`x30`), and for `x86_64` third `Encoder` temporary - `r14` is use…
179 * **Save LR and FP register to stack.**
181 on stack, so we load it into temporary (we need it for `BoundaryFrame`), and push `rbp` to the stac…
185 for 3 out of 4 Resolvers (all but CallStatic) "return address" and "previous frame" values which ar…
189 In CallStatic resolver we prepare place on the stack and save registers there. In three other Resol…
198 Adjust stack pointer (second time for `CallStatic` Resolver, and the only time for other) and
199 call `SaveRegisters` two times - for float and scalar registers.
206 Reverse what was done two steps above - `LoadRegisters` for float and scalar registers, then adjust…
213 On `x86_64` this step is not required, as `r12` appears to be callee-saved register and is restored…
220 * **Restore LR and FP.**
224 Jump to the callee Method in `CallStatic` Resolver, and do a usual "return" in others.