Go to the documentation of this file. 1 package com.cliffc.aa.node;
26 @Override
public String
xstr() {
return "."+
_fld+
"="; }
28 @Override
public boolean is_mem() {
return true; }
42 if(
mem==
this )
return null;
52 (idx=nnn._ts.fld_find(
_fld))!= -1 && nnn._ts.fld(idx)._access==
Access.
RW ) {
146 return bad(
"Unknown",fast,
null);
149 if( tmem==
Type.
ALL )
return bad(
"Unknown",fast,
null);
150 if( tmem==
Type.
ANY )
return null;
154 if( !(objs instanceof
TypeStruct) )
return bad(
"No such",fast,objs);
157 if( idx==-1 )
return bad(
"No such",fast,objs);
160 return bad(
"Cannot re-assign "+access,fast,ts);
168 @Override
public int hashCode() {
return super.hashCode()+
_fld.hashCode()+
_fin.hashCode(); }
172 @Override
public boolean equals(Object o) {
173 if(
this==o )
return true;
174 if( !(o instanceof
StoreNode) || !super.equals(o) )
return false;
179 @Override
public boolean unify(
boolean test ) {
183 public static boolean unify(
Node n,
Node rez, String fld,
boolean test, String alloc_site) {
186 if( !tmem.
isa(
"Mem") )
return false;
189 if( !(tadr instanceof
TypeMemPtr) )
return false;
192 boolean progress = n.
tvar().
unify(tmem,test);
193 if( progress && test )
return progress;
TypeMem live_use(GVNGCM.Mode opt_mode, Node def)
StoreNode(Node mem, Node adr, Node val, Access fin, String fld, Parse bad)
StoreNode(StoreNode st, Node mem, Node adr)
boolean unify(boolean test)
boolean unify(TV2 that, boolean test)
TypeObj ld(TypeMemPtr ptr)
TypeMem update(BitsAlias aliases, Access fin, String fld, Type val)
Memory type; the state of all of memory; memory edges order memory ops.
static boolean eq(String s0, String s1)
void update(String tok, Access mutable, Node val)
public< N extends Node > N add_mono(N n)
void add_flow_uses(Node n)
Type value(GVNGCM.Mode opt_mode)
static final TypeMem ESCAPE
an implementation of language AA
static ErrMsg niladr(Parse loc, String msg, String fld)
static final TypeMem ALLMEM
A memory-based collection of optionally named fields.
static RuntimeException unimpl()
boolean unify_alias_fld(Node ldst, BitsAlias aliases, String fld, TV2 tv, boolean test, String alloc_site)
boolean check_solo_mem_writer(Node memw)
void add_flow_extra(Type old)
static boolean unify(Node n, Node rez, String fld, boolean test, String alloc_site)
ErrMsg bad(String msg, boolean fast, TypeObj to)
static final TypeObj UNUSED
static boolean check_split(Node head1, BitsAlias head1_escs)
static final TypeMem ALIVE
an implementation of language AA
static final byte OP_STORE
public< N extends Node > N add_reduce(N n)
static Node insert_split(Node tail1, BitsAlias head1_escs, Node head1, Node tail2, Node head2)
an implementation of language AA
static ErrMsg field(Parse loc, String msg, String fld, boolean closure, TypeObj to)