class SE_CONTEXT
****


Flattened version is here



Public


Readable Attributes
attr has_arith_error:BOOL;
**** true if the function could break if arith checks are on and it is called with the wrong arguments
attr has_export:BOOL;
**** true if the function (or any function it calls) makes an import
attr has_fatal_error:BOOL;
**** true if the function (or any function it calls) may encounter a fatal error
attr has_import:BOOL;
**** true if the function (or any function it calls) makes an import
attr has_raise:BOOL;
**** true if the function (or any function it calls) may raise an exception
attr has_yield_in_lock:BOOL;
**** true if an iter has a yield inside a lock
attr may_block:BOOL;
**** true if the function could block (lock)
attr rsig:SIG;
**** signature of the routine this is for
attr unsafe:BOOL;
**** is it unsafe to optimize this function out?
attr weight:INT;
**** number that defines the weight of the function

Writable Attributes
attr has_arith_error:BOOL;
**** true if the function could break if arith checks are on and it is called with the wrong arguments
attr has_export:BOOL;
**** true if the function (or any function it calls) makes an import
attr has_fatal_error:BOOL;
**** true if the function (or any function it calls) may encounter a fatal error
attr has_import:BOOL;
**** true if the function (or any function it calls) makes an import
attr has_raise:BOOL;
**** true if the function (or any function it calls) may raise an exception
attr has_yield_in_lock:BOOL;
**** true if an iter has a yield inside a lock
attr may_block:BOOL;
**** true if the function could block (lock)
attr rsig:SIG;
**** signature of the routine this is for
attr unsafe:BOOL;
**** is it unsafe to optimize this function out?
attr weight:INT;
**** number that defines the weight of the function

Readonly Shareds
shared cs_options:CS_OPTIONS;
**** options for the compiler
shared prog:PROG;
****

Writable Shareds
shared cs_options:CS_OPTIONS;
**** options for the compiler
shared prog:PROG;
****

Features
create(prog:PROG,sig:SIG):SAME
do_side_debug:BOOL
do_side_effects:BOOL
expand_macro(r:STR,sig:SIG):STR
full(b:BOOL) is is_full:=b; end;
full:BOOL is return is_full or has_import or has_export; end;
get_abstract_union(for_prog:PROG,for_sig:SIG):SE_CONTEXT
get_options
get_se_context(sig:SIG):SE_CONTEXT
**** make sure we don't try to do this for checking code a check in do_side_effects should prevent this
is_recursive(sig:SIG):BOOL
mark_clean
mark_context(amattr:$AM)
mark_full
mark_se(nsec:SE_CONTEXT)
mark_se(nse:SIDE_EFFECT)
**** if we don't care about side effects, then return now
mark_se(amattr:$AM,doeswrite:BOOL)
mark_unsafe
maxsize:INT
register
se_array(tp:$TP):SIDE_EFFECT
se_attr(tp:$TP,name:IDENT):SIDE_EFFECT
se_local(name:IDENT):SIDE_EFFECT
size:INT
str:STR

Iters
elt!:SIDE_EFFECT


Private

get_builtin_context
get_touched_attr(a:ARRAY{STR},doeswrite:BOOL)
attr is_full:BOOL;
**** do we assume everything is modified
attr is_full:BOOL;
**** do we assume everything is modified
attr set:FSET{SIDE_EFFECT};
**** the set of attributes modified
attr set:FSET{SIDE_EFFECT};
**** the set of attributes modified