• Home
  • Raw
  • Download

Lines Matching refs:a

15 Panda runtime is a set of functions used to execute managed code. The runtime consists of several m…
18 The interpreter, as a part of runtime, executes bytecodes of managed functions and manages hotness
22 `panda::CompilerInterface::CompileMethodSync` for compilation. When a function is compiled, the com…
27 Compiled code of a managed function must accept one extra argument: the pointer to `panda::Method` …
31 Consider a function int max(int a, int b).
34 - a pointer to `panda::Method` in the register R0.
35 - `a` in the register R1
46 | pending_exception_ | panda::ObjectHeader* | A pointer to a thrown exception or 0 if there is n…
51 There is an allocated register for each target architecture to store a pointer to `panda::ManagedTh…
52 must contain a valid pointer to `panda::ManagedThread` on entry to each compiled function.
55 Runtime serves compiled code via runtime entrypoints. A runtime entrypoint is a function which conf…
59 `panda::Method` describes a managed function in the runtime.
68 The field `hotness_counter_` reflects hotness of a managed function. The interpreter increments it …
71 Panda runtime provides a command line option to tune the hotness counter threshold: `--compiler-hot…
74 Entrypoint is a pointer to native code which can execute the function. This code must conform to th…
75 one extra argument: a pointer to `panda::Method` ( See [Calling convention](#calling_convention)).
78 If the function is executed by the interpreter, the `compiled_entry_point_` must point to a runtime…
85 …y `panda::Frame` class. The class has fields to store virtual registers and a pointer to the previ…
86 …ive interpreter stack frames are organized into a linked list. The field `panda::Frame::prev_` con…
90 Generally compiled function builds the stack frame in prolog and releases it in epilog. If a compil…
92 When compiled code is being executed the `stack pointer` register must point to a valid stack frame…
138 `stack pointer` register contains a pointer to the last stack element.
139 `frame pointer` register contains a pointer to the place in the stack where the return address is s…
141 Panda has a special class for getting cframe layout: `class CFrameLayout`. Everything related to th…
144 ## Calling a function from compiled code
145 To call a managed function, the compiled code must resolve it (i.e. retrieve a pointer to callee's …
147 Resolving of a function could be done by calling the corresponding runtime entrypoint.
150 Calling `int max(int a, int b)` function from compiled code on ARM architecture with arguments `2` …
154 // r0 contains a pointer to the current `panda::Method`
159 // r0 contains a pointer to `panda::Method` which describes `int max(int, int)` function.
169 ## Calling a function from compiled code: Bridge function
170 The compiler has an entrypoints table. Each entrypoint contains a link to the bridge function.
174 To do a runtime call from compiled code the compiler generates:
210 When the interpreter handles a call instruction, it first resolves the callee method.
217 * Builds a boundary stack frame.
220 …lling convention. The function uses the bytecode instruction (which must be a variant of `call` in…
233 u a | CODE_BRIDGE |
236 a | interpreter |
239 a +----------------+
245 The structure of boundary frame is the same as a stack frame of compiled code.
250 If a function needs be executed by the interpreter, it must have `CompiledCodeToInterpreterBridge` …
253 * Creates a boundary stack frame which contains room for interpreter frame.
266 o a +----------------+ <+ frame pointer
270 a f | TO_ |
272 y a | BRIDGE |
279 The structure of boundary frame is the same as a stack frame of compiled code.
280 Instead of a pointer to `panda::Method` the frame contains constant `COMPILED_CODE_TO_INTERPRETER_B…
285 Stack traversing is performed by the runtime. When the runtime examines a managed thread's stack, t…
289 * If the top stack frame is a compiled code stack frame, `frame pointer` register contains the addr…
291 Having a pointer to the top stack frame, its kind and structure the runtime can move to the next fr…
294 | Kind of the current stack frame | How to get a pointer to the next stack frame | Kind of the prev…
306 during handling a compiled code stack frame, it uses meta information generated by the compiler.
331 n a +----------------+<-+
333 a k +----------------+ |
337 a | BRIDGE | |
344 a +----------------+ <+
351 u a | CODE_BRIDGE | |
354 a | interpreter | |
357 a +----------------+ |
379 At this step the runtime has a pointer to `bar`'s compiled code stack frame. To go to the next fram…
383 There may be a situation when compiled code cannot continue execution for some reason.
407 Finding a catch handler in a compiled code stack frame is performed according meta information gene…