Lines Matching full:frame
31 // ========== Compatible Frame Layout ==========
33 // Frame layout - Static Languages
35 // | panda::Frame |
50 // Frame layout - Dynamic Languages
52 // | panda::Frame |
72 class Frame {
74 // Instrumentation: indicate what the frame must be force poped
76 // Instrumentation: indicate what the frame must retry last instruction
78 // Instrumentation: indicate what the frame must notify when poped
80 // Indicate that the frame was created after deoptimization.
84 …// Indicate whether this frame is stackless frame, only take effects under stackless interpreter m…
86 …// Indicate whether this frame is initobj frame, only take effects under stackless interpreter mod…
89 // Indicate whether this frame is created in Method::Invoke
92 // Indicate whether this frame is static or dynamic, which decides the frame layout
95 ALWAYS_INLINE inline Frame(void *ext, Method *method, Frame *prev, uint32_t nregs) in Frame() function
107 …ALWAYS_INLINE inline Frame(void *ext, Method *method, Frame *prev, uint32_t nregs, uint32_t num_ac… in Frame() function
120 ALWAYS_INLINE static void *ToExt(Frame *frame, size_t ext_sz) in ToExt() argument
122 return reinterpret_cast<void *>(reinterpret_cast<uintptr_t>(frame) - ext_sz); in ToExt()
125 ALWAYS_INLINE static Frame *FromExt(void *ext, size_t ext_sz) in FromExt()
127 return reinterpret_cast<Frame *>(reinterpret_cast<uintptr_t>(ext) + ext_sz); in FromExt()
172 ALWAYS_INLINE inline void SetPrevFrame(Frame *prev) in SetPrevFrame()
177 ALWAYS_INLINE inline Frame *GetPrevFrame() const in GetPrevFrame()
224 return AlignUp(sizeof(Frame) + sizeof(interpreter::VRegister) * size + ext_sz, in GetAllocSize()
352 return MEMBER_OFFSET(Frame, method_); in GetMethodOffset()
357 return MEMBER_OFFSET(Frame, prev_); in GetPrevFrameOffset()
362 return MEMBER_OFFSET(Frame, nregs_); in GetNumVregsOffset()
367 return MEMBER_OFFSET(Frame, vregs_); in GetVregsOffset()
372 return MEMBER_OFFSET(Frame, acc_); in GetAccOffset()
377 return MEMBER_OFFSET(Frame, flags_); in GetFlagsOffset()
382 return MEMBER_OFFSET(Frame, next_inst_); in GetNextInstructionOffset()
387 return MEMBER_OFFSET(Frame, inst_); in GetInstructionsOffset()
390 ~Frame() = default;
392 NO_COPY_SEMANTIC(Frame);
393 NO_MOVE_SEMANTIC(Frame);
396 Frame *prev_;
415 ALWAYS_INLINE inline explicit FrameHandler(Frame *frame) : frame_(frame) {} in FrameHandler() argument
447 ALWAYS_INLINE inline void SetPrevFrame(Frame *prev) in SetPrevFrame()
452 ALWAYS_INLINE inline Frame *GetPrevFrame() const in GetPrevFrame()
597 ALWAYS_INLINE inline Frame *operator*() const
611 Frame::GetVregsOffset()); in GetVRegisters()
614 Frame *frame_ {nullptr}; // NOLINT(misc-non-private-member-variables-in-classes)
619 ALWAYS_INLINE inline explicit StaticFrameHandler(Frame *frame) : FrameHandler(frame) {} in StaticFrameHandler() argument
642 ALWAYS_INLINE inline explicit DynamicFrameHandler(Frame *frame) : FrameHandler(frame) {} in DynamicFrameHandler() argument
657 …inline typename std::enable_if<is_dynamic, DynamicFrameHandler>::type GetFrameHandler(Frame *frame) in GetFrameHandler() argument
659 return DynamicFrameHandler(frame); in GetFrameHandler()
663 …inline typename std::enable_if<!is_dynamic, StaticFrameHandler>::type GetFrameHandler(Frame *frame) in GetFrameHandler() argument
665 return StaticFrameHandler(frame); in GetFrameHandler()
668 // ExtFrame<ExtData> is an extended panda::Frame. It's used to hold any
669 // language-specific data, which is required to be associated with panda::Frame.
677 // | Frame.field1 | <---- ExtFame::Frame*
678 // | Frame.field2 |
685 // may access its LangSpecData via panda::Frame *base_frame
687 // if it's known that this frame was properly allocated.
696 ALWAYS_INLINE inline Frame *GetFrame() in GetFrame()
698 return &frame; in GetFrame()
711 ALWAYS_INLINE static inline ExtFrame<ExtData> *FromFrame(Frame *base) in FromFrame()
719 static constexpr uint32_t frame_offset = MEMBER_OFFSET(ExtFrame<ExtData>, frame);
724 __extension__ Frame frame; variable
740 ALWAYS_INLINE inline Frame *CreateFrame(mem::StackFrameAllocator *stack_frame_allocator, uint32_t n… in CreateFrame()
741 … Method *method, Frame *prev, uint32_t nregs, uint32_t num_actual_args) in CreateFrame()
745 size_t ext_frame_size = Frame::GetAllocSize(nregs_size, ext_size); in CreateFrame()
751 return new (Frame::FromExt(mem, ext_size)) Frame(mem, method, prev, nregs, num_actual_args); in CreateFrame()
754 …WAYS_INLINE inline void DestroyFrame(mem::StackFrameAllocator *stack_frame_allocator, Frame *frame) in DestroyFrame() argument
756 ASSERT(frame->GetExt() != nullptr); in DestroyFrame()
757 stack_frame_allocator->Free(frame->GetExt()); in DestroyFrame()