Managed_Finalizer¶
- class Managed_Finalizer (concrete, logical)¶
Managed finalizer: C++/CLI
!Foo()(will be called by the garbage collector)- Implemented interfaces:
implements Managed_Method_Interface
- Direct parents:
inherits Destructor
- Ancestor classes and implemented interfaces:
Declarative_Node, Destructor, General_Object_Interface, Local_Scope, Logical_IR_Root, Managed_Attributes_Interface, Managed_Method_Interface, Managed_Routine_Interface, Member, Member_Routine, Method, Named_Entity, Parameters_Interface, Primary_Link_Object_Interface, Real_Entity_Interface, Real_Routine_Interface, Routine, Scope, Symbol, Template_Base_Interface, Template_Or_Member_Routine_Interface
Field
Kind
Type
Description
Redefines (from Method)
semantic
list of class Method
redefined methods, if any
Routines (from Routine)
syntactic
set of class Routine
replace inherited field with default value
Return_Type (from Routine)
semantic
class Type
Always semantic reference as we move anonymous types into special part of the AST
Attributes (from Routine)
attribute
bitfield Logical_Routine_Attributes_Type
Bitfield of flags like
is_inline,is_constetc.Calling_Convention (from Routine)
attribute
esp. MS-specific conventions like
__stdcallFriend_Of (from Routine)
semantic
set of class Type
Classes this routine is a friend of (and can therefore access their members).
Basic_Blocks (from Routine)
syntactic
list of class CFG_Block
Basic_Blocks[0]is CFG_Entry_Block,Basic_Blocks[-1]is CFG_Exit_Block. The blocks/instructions appear approximately in syntactic order. Statements are emitted in exactly syntactic order; expressions within a statement will generate instructions in evaluation order.In
for (int i = 0; i < 10; i++) body;, the loop-expressioni++will appear after the loop body.In
f()->field = g();, the call tog()will appear before the call tof()according to the C++17 evaluation order.Code after a
goto(whether unreachable or reachable via label) will be placed directly after thegotoblock.For any statement/expression, all instructions from that stmt/expr will form a contiguous region (which may spread across multiple blocks), and will not be interleaved with the instructions from a different statement/expression. This makes it possible to use a pair of start/end edges to instructions to mark the whole region of code responsible, e.g., for the initialization of a variable.
The Basic_Blocks list does not contain the exceptional exit block or the coroutine destroy exit block – if these are present, they are stored in separate syntactic fields.
Exceptional_Exit_Block (from Routine)
syntactic
in case an exception propagates from within the routine
Coroutine_Destroy_Exit_Block (from Routine)
syntactic
coroutine destroy exit block syntactic Control_Tree_Root : class Control_Tree_Block; semantic Unreachable_Blocks : set of class CFG_Standard_Block; those with no predecessors (except the entry node); they could still be the target of a local computed goto
Return_Value (from Routine)
syntactic
class Return_Helper_Variable
the object which represents the return value, or NULL if none
Cuda_Architecture (from Routine)
attribute
builtin Byte
If non-zero, the CUDA device architecture for which the routine was compiled. E.g., a
__device__function compiled with-arch=compute_70has Cuda_Architecture=70. Host code has Cuda_Architecture=0.Nested_Scopes (from Local_Scope)
syntactic
list of class Local_Scope
Nested block and temporary scopes.
Helpers (from Local_Scope)
syntactic
list of class Helper_Variable
Temporary variables.
Usings (from Scope)
semantic
set of class Symbol
using <namespace>andusing <declaration>Types (from Scope)
syntactic
set of class Type
Variables (from Scope)
syntactic
set of class Variable
Concepts (from Scope)
syntactic
set of class Concept
Template_Composites (from Scope)
syntactic
set of interface Template_Composite_Type_Interface
Template_Routines (from Scope)
syntactic
set of interface Template_Routine_Interface
Parent (from Logical_IR_Root)
semantic
class Logical_IR_Root
Physical (from Logical_IR_Root)
semantic to physical
class Physical_IR_Root
Custom_Attributes (from Managed_Attributes_Interface)
syntactic
set of class Managed_Attribute
Mangled_Trailing_Requires_Clause (from Template_Or_Member_Routine_Interface)
attribute
builtin String
Visibility (from Member)
attribute
enum Visibility_Type
Link_Flags (from Primary_Link_Object_Interface)
attribute
bitfield Link_Flags_Type
Component (from Primary_Link_Object_Interface)
attribute
builtin String
for local-to-library elements: name of DLL/
.sowhen linked (sealed) for unit-local constexpr variables: name of fileBase_Template (from Template_Base_Interface)
semantic
class Symbol
usually, a Template_Interface, but could also be a normal method/nested class inside a template
Template_Arguments (from Template_Base_Interface)
syntactic
list of class Template_Argument
Is_Partial_Specialization (from Template_Base_Interface)
attribute
builtin Boolean
Is_Full_Specialization (from Template_Base_Interface)
attribute
builtin Boolean
Is_Template_Instance (from Template_Base_Interface)
attribute
builtin Boolean
Parameters (from Parameters_Interface)
syntactic
list of class Parameter
Name (from Named_Entity)
attribute
builtin String