Go to the documentation of this file. 1 package com.cliffc.aa.node;
7 import java.util.HashMap;
8 import java.util.function.Predicate;
20 private final HashMap<String,ConTypeNode>
_types;
38 HashMap<String,Type> ts =
new HashMap<>();
40 for( String tname : ts.keySet() )
60 if( old.
_uses._len <= 2 )
74 @Override
public boolean is_mem() {
return true; }
98 assert
_types.get(name)==
null;
147 assert
_uses._len==0;
155 if(
this==
Env.
SCP_0 && opt_mode._CG )
171 @Override
public int hashCode() {
return 123456789; }
173 @Override
public boolean equals(Object o) {
return this==o; }
192 if(
_ifs ==
null ||
_ifs._len==0 )
return;
193 _ifs.last().def(name,
mutable,create);
207 if( !create && !
_arm &&
_tvars.get(name) !=
null )
211 Access res = vars.put(name,
mutable);
222 String name = names.
pop();
228 if( vars.isEmpty() )
return mem;
230 for( String name : vars.keySet() ) {
231 String msg =
"'"+name+
"' not defined on "+arm+
" arm of trinary";
void add_type(String name, ConTypeNode t)
HashMap< String, Access > _fvars
static final TypeMem DEAD
Node check_if(boolean arm, Parse bad, GVNGCM gvn, Node ctrl, Node mem)
void def_if(String name, Access mutable, boolean create)
Memory type; the state of all of memory; memory edges order memory ops.
public< N extends Node > N add_mono(N n)
static final TypeMem XMEM
static final TypeMemPtr OOP
ScopeNode(Parse open, boolean closure)
Ary< E > addAll(Collection<? extends E > c)
static final TypeMem LIVE_BOT
Node add_work_all(Node n)
an implementation of language AA
void add_flow_def_extra(Node chg)
public< N extends Node > N keep()
static final TypeMem ALLMEM
TypeMem live(GVNGCM.Mode opt_mode)
static boolean test(long[] bits, int i)
static final TypeMem ANYMEM
ScopeNode(HashMap< String, ConTypeNode > types, Node ctl, Node mem, Node ptr, Node rez)
public< N extends Node > N unkeep()
ConTypeNode get_type(int alias)
static void init0(HashMap< String, Type > types)
final HashMap< String, ConTypeNode > _types
static final byte OP_SCOPE
static final TypeMem ALIVE
void def(String name, Access mutable, boolean create)
an implementation of language AA
Type value(GVNGCM.Mode opt_mode)
boolean is_mutable(String name)
static TypeMem compute_live_mem(Node mem, Node rez)
Node set_def(int idx, Node n)
TypeMem live_use(GVNGCM.Mode opt_mode, Node def)
Node walk_dom_last(Predicate< Node > P)
BitsAlias all_reaching_aliases(BitsAlias aliases)
HashMap< String, Access > _tvars
public< N extends Node > N set_ctrl(N n)
static final TypeMemPtr OOP0
boolean is_mutable(String name)
ConTypeNode get_type(String name)
Node check(ScopeNode scope, boolean arm, Parse bad, GVNGCM gvn, Node ctrl, Node mem)
public< N extends Node > N init(N n)
an implementation of language AA
TypeMem slice_reaching_aliases(BitsAlias aliases)
void replace_mem(Node st)