Go to the documentation of this file. 1 package com.cliffc.aa.node;
7 import org.jetbrains.annotations.NotNull;
22 @Override
public String
xstr() {
return "."+
_fld; }
41 return rez==
this ? null : rez;
101 for(
int i=1; i<
mem.
_defs._len; i++ )
113 if( !(tmem instanceof
TypeMem) || aliases==
null )
return null;
117 cnt++; assert cnt < 100;
121 if( st.
adr()==
adr )
return st.
err(
true)==
null ? st :
null;
124 if( !(tst instanceof
TypeMemPtr) )
return null;
129 if(
mem == st.
mem() )
return null;
142 if( !(tmem0 instanceof
TypeMem) || !(tmem1 instanceof
TypeMem) )
return null;
144 if(
mem==
null )
return null;
147 }
else if( mem0 instanceof
CallNode ) {
163 if( jmem ==
null )
return null;
180 if( !is_load )
return null;
199 if( !(tmem instanceof
TypeMem) )
return tmem.
oob();
251 if( idx == -1 )
return tobj.
oob();
267 @Override
public boolean unify(
boolean test ) {
270 if( !tmem.
isa(
"Mem") )
return false;
273 if( !(tadr instanceof
TypeMemPtr) )
return false;
288 if( test && progress )
return progress;
296 if( test && progress )
return progress;
301 public static boolean unify(
Node n, String fld,
boolean test, String alloc_site) {
304 if( !tmem.
isa(
"Mem") )
return false;
307 if( !(tadr instanceof
TypeMemPtr) )
return false;
317 if( tadr==
Type.
ANY )
return null;
319 return bad(fast,
null);
323 if( tmem==
Type.
ANY )
return null;
329 return bad(fast,objs);
336 @Override
public int hashCode() {
return super.hashCode()+
_fld.hashCode(); }
337 @Override
public boolean equals(Object o) {
338 if(
this==o )
return true;
339 if( !super.equals(o) )
return false;
static final Type NO_DISP
boolean unify_at(Comparable key, TV2 tv2, boolean test)
boolean unify(TV2 that, boolean test)
TypeObj ld(TypeMemPtr ptr)
static final TypeMem DEAD
TypeMem live(GVNGCM.Mode opt_mode)
Memory type; the state of all of memory; memory edges order memory ops.
static boolean eq(String s0, String s1)
public< N extends Node > N add_mono(N n)
static final byte OP_LOOP
void args_put(Comparable key, TV2 tv)
Node add_work_all(Node n)
an implementation of language AA
TypeMem _live_use(GVNGCM.Mode opt_mode, Node def)
static Node _find_previous_store_call(BitsAlias aliases, TypeMem tmem0, TypeMem tmem1, CallEpiNode cepi, String fld, boolean is_load)
static boolean unify(Node n, String fld, boolean test, String alloc_site)
static ErrMsg niladr(Parse loc, String msg, String fld)
static final TypeMem ALLMEM
A memory-based collection of optionally named fields.
boolean test_recur(int i)
static RuntimeException unimpl()
static final TypeMem ANYMEM
static TV2 make(@NotNull String name, Node n, @NotNull String alloc_site)
boolean unify_alias_fld(Node ldst, BitsAlias aliases, String fld, TV2 tv, boolean test, String alloc_site)
ErrMsg bad(boolean fast, TypeObj to)
LoadNode(Node mem, Node adr, String fld, Parse bad)
Type get_fld(TypeObj tobj)
static void join(Tree tree, long[] bits0, long[] bits1, long[] bits2)
boolean fld_is_mod(BitsAlias aliases, String fld)
static final TypeObj UNUSED
void add_flow_use_extra(Node chg)
static final byte OP_LOAD
static final TypeMem ALIVE
TypeFunPtr make_no_disp()
an implementation of language AA
Node set_def(int idx, Node n)
public< N extends Node > N add_reduce(N n)
TypeMem live_use(GVNGCM.Mode opt_mode, Node def)
public< N extends Node > N add_flow(N n)
Type get_fld2(TypeObj tobj)
an implementation of language AA
static TypeMemPtr tesc(Type tcall)
static Node find_previous_store(Node mem, Node adr, BitsAlias aliases, String fld, boolean is_load)
static ErrMsg field(Parse loc, String msg, String fld, boolean closure, TypeObj to)
boolean unify(boolean test)
Type value(GVNGCM.Mode opt_mode)