Lines Matching full:for
7 JIT/AOT compiler has a `SlowPath` mechanism. It is used for some opcodes where a call to runtime is…
10 Unique `SlowPath` blob is generated for each place it is called, and as it contains saving register…
11 `BoundaryFrame` for stack walker, it's code is much longer than few runtime-call-related instructio…
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…
29 fully transparent resolver for code generation. Lets see `arm64` example (`GetCompiledEntryPointOff…
66 For each pair of File (input for `ark_aot` compiler) and callee `method Id` (`panda_file::File::Ent…
85 ; CallVirtual opcode (register allocator used x5 for Class ptr) |
104 Thus for `PLT CallVirtual Resolver` convention is the following - first `Encoder` temporary register
105 (`x16` for `arm64` or `r12` for `x86_84`) is a parameter with `SecondSlot` address and also the sam…
116 For each pair of File (input for `ark_aot` compiler) and `class Id` (`panda_file::File::EntityId`) …
137 ; Shared resolved slow path for PLT resolver |
141 ; LoadAndInitClass opcode (w7 register allocated for result) |
145 XX+12: bl YY - (XX+08) ; Call shared slow path for PLT resolver, x16 works like a "parame…
151 For class-related resolvers convention is the following - first `Encoder` temporary register
152 (`x16` for `arm64` or `r12` for `x86_84`) is a parameter with Slot address, and it is also used as …
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…
174 One more issue is that first `Encoder` temporary register (`x16` for `arm64` or `r12` for `x86_84`)…
175 in 3 Resolvers (all but CallStatic) is actually a caller-saved for `arm64`, but callee-saved for `x…
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…
192 Moreover, for `arm64` we manually add `x16` to live registers set.
194 * **Prepare parameters for Runtime Call.**
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.
203 AOT file, but distance to `.aot_got` section can be calculated in the same way like for usual code …
206 Reverse what was done two steps above - `LoadRegisters` for float and scalar registers, then adjust…