aa
com.cliffc.aa.node.NewObjNode Class Reference
Inheritance diagram for com.cliffc.aa.node.NewObjNode:
[legend]
Collaboration diagram for com.cliffc.aa.node.NewObjNode:
[legend]

Public Member Functions

 NewObjNode (boolean is_closure, int alias, TypeStruct ts, Node clo)
 
 NewObjNode (boolean is_closure, TypeStruct disp, Node clo)
 
void add_flow_def_extra (Node chg)
 
void add_flow_extra (Type old)
 
FunPtrNode add_fun (Parse bad, String name, FunPtrNode ptr)
 
void add_reduce_extra ()
 
TypeMem all_live ()
 
NewNode copy (boolean copy_edges)
 
void create (String name, Node val, Access mutable)
 
void create_active (String name, Node val, Access mutable)
 
boolean equals (Object o)
 
boolean exists (String name)
 
Node get (String name)
 
int hashCode ()
 
Node ideal_mono ()
 
Node ideal_reduce ()
 
boolean is_mutable (String name)
 
TypeMem live_use (GVNGCM.Mode opt_mode, Node def)
 
MrgProjNode mrg ()
 
void no_more_fields ()
 
void promote_forward (NewObjNode parent)
 
final void sets (T ts)
 
final void setsm (T ts)
 
void update (int fidx, Access mutable, Node val)
 
void update (String tok, Access mutable, Node val)
 
Type value (GVNGCM.Mode opt_mode)
 
String xstr ()
 

Public Attributes

int _alias
 
Parse[] _fld_starts
 
final boolean _is_closure
 
TypeMemPtr _tptr
 
_ts
 

Package Functions

TypeStruct dead_type ()
 
BitsAlias escapees ()
 
Node fld (int fld)
 
boolean is_unused ()
 
void kill2 ()
 
ProjNode ptr ()
 
void set_name (TypeStruct name)
 
String str ()
 
TypeObj valueobj ()
 

Static Package Functions

static int def_idx (int fld)
 

Package Attributes

TypeObj _crushed
 

Private Member Functions

void _init (int alias, T ts)
 
boolean captured ()
 

Detailed Description

Definition at line 20 of file NewObjNode.java.

Constructor & Destructor Documentation

◆ NewObjNode() [1/2]

com.cliffc.aa.node.NewObjNode.NewObjNode ( boolean  is_closure,
TypeStruct  disp,
Node  clo 
)

Definition at line 25 of file NewObjNode.java.

25  {
26  super(OP_NEWOBJ,BitsAlias.REC,disp);
27  add_def(clo);
28  _is_closure = is_closure;
29  assert disp.fld(0).is_display_ptr();
30  }

References com.cliffc.aa.node.NewObjNode._is_closure, com.cliffc.aa.type.TypeStruct.fld(), com.cliffc.aa.type.TypeFld.is_display_ptr(), and com.cliffc.aa.type.BitsAlias.REC.

Here is the call graph for this function:

◆ NewObjNode() [2/2]

com.cliffc.aa.node.NewObjNode.NewObjNode ( boolean  is_closure,
int  alias,
TypeStruct  ts,
Node  clo 
)

Definition at line 32 of file NewObjNode.java.

32  {
33  super(OP_NEWOBJ,alias,ts,clo);
34  _is_closure = is_closure;
35  assert ts.fld(0).is_display_ptr();
36  }

References com.cliffc.aa.node.NewObjNode._is_closure, com.cliffc.aa.type.TypeStruct.fld(), and com.cliffc.aa.type.TypeFld.is_display_ptr().

Here is the call graph for this function:

Member Function Documentation

◆ _init()

void com.cliffc.aa.node.NewNode< T extends TypeObj< T >._init ( int  alias,
ts 
)
privateinherited

Definition at line 43 of file NewNode.java.

43  {
44  if( _elock ) unelock(); // Unlock before changing hash
45  _alias = alias;
47  sets(ts);
48  }

◆ add_flow_def_extra()

void com.cliffc.aa.node.NewNode< T extends TypeObj< T >.add_flow_def_extra ( Node  chg)
inherited

Definition at line 72 of file NewNode.java.

72  {
73  if( chg instanceof MrgProjNode && chg._live.at(_alias)==TypeObj.UNUSED )
74  Env.GVN.add_reduce(chg);
75  }

◆ add_flow_extra()

void com.cliffc.aa.node.NewObjNode.add_flow_extra ( Type  old)

Definition at line 133 of file NewObjNode.java.

133  {
134  Env.GVN.add_mono(this); // Can update crushed
135  }

References com.cliffc.aa.GVNGCM.add_mono(), and com.cliffc.aa.Env.GVN.

Here is the call graph for this function:

◆ add_fun()

FunPtrNode com.cliffc.aa.node.NewObjNode.add_fun ( Parse  bad,
String  name,
FunPtrNode  ptr 
)

Definition at line 76 of file NewObjNode.java.

76  {
77  int fidx = _ts.fld_find(name);
78  if( fidx == -1 ) {
80  } else {
81  Node n = _defs.at(def_idx(fidx));
82  if( n instanceof UnresolvedNode ) n.add_def(ptr);
83  else n = new UnresolvedNode(bad,n,ptr);
84  n.xval(); // Update the input type, so the _ts field updates
85  update(fidx,Access.Final,n);
86  }
87  return ptr;
88  }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, com.cliffc.aa.node.Node.add_def(), com.cliffc.aa.node.NewObjNode.create_active(), com.cliffc.aa.node.NewNode< TypeStruct >.def_idx(), com.cliffc.aa.type.TypeFld.Access.Final, com.cliffc.aa.node.NewNode< TypeStruct >.ptr(), com.cliffc.aa.node.NewObjNode.update(), and com.cliffc.aa.node.Node.xval().

Referenced by com.cliffc.aa.Env.add_fun(), and com.cliffc.aa.Env.top_scope().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_reduce_extra()

void com.cliffc.aa.node.NewNode< T extends TypeObj< T >.add_reduce_extra
inherited

Definition at line 77 of file NewNode.java.

77  {
79  }

◆ all_live()

TypeMem com.cliffc.aa.node.NewNode< T extends TypeObj< T >.all_live
inherited

Definition at line 86 of file NewNode.java.

86 { return TypeMem.ALLMEM; }

◆ captured()

boolean com.cliffc.aa.node.NewNode< T extends TypeObj< T >.captured
privateinherited

Definition at line 116 of file NewNode.java.

116  {
117  if( _keep > 0 ) return false;
118  if( _uses._len==0 ) return false; // Dead or being created
119  Node mem = _uses.at(0);
120  // If only either address or memory remains, then memory contents are dead
121  if( _uses._len==1 ) {
122  if( mem instanceof MrgProjNode ) return true; // No pointer, just dead memory
123  // Just a pointer; currently on Strings become memory constants and
124  // constant-fold - leaving the allocation dead.
125  return !(val(1) instanceof TypeStr);
126  }
127  Node ptr = _uses.at(1);
128  if( ptr instanceof MrgProjNode ) ptr = _uses.at(0); // Get ptr not mem
129  if( ptr._keep>0 ) return false;
130 
131  // Scan for memory contents being unreachable.
132  // Really stupid!
133  for( Node use : ptr._uses )
134  if( !(use instanceof IfNode) )
135  return false;
136  // Only used to nil-check (always not-nil) and equality (always unequal to
137  // other aliases).
138  return true;
139  }

◆ copy()

NewNode com.cliffc.aa.node.NewNode< T extends TypeObj< T >.copy ( boolean  copy_edges)
inherited

Definition at line 143 of file NewNode.java.

143  {
144  // Split the original '_alias' class into 2 sub-aliases
145  NewNode<T> nnn = (NewNode<T>)super.copy(copy_edges);
146  nnn._init(BitsAlias.new_alias(_alias),_ts); // Children alias classes, split from parent
147  _init(BitsAlias.new_alias(_alias),_ts); // The original NewNode also splits from the parent alias
148  Env.GVN.add_flow(this); // Alias changes flow
149  return nnn;
150  }

◆ create()

void com.cliffc.aa.node.NewObjNode.create ( String  name,
Node  val,
Access  mutable 
)

Definition at line 51 of file NewObjNode.java.

51  {
52  assert !Util.eq(name,"^"); // Closure field created on init
53  create_active(name,val,mutable);
54  }

References com.cliffc.aa.node.NewObjNode.create_active(), and com.cliffc.aa.util.Util.eq().

Referenced by com.cliffc.aa.Parse.create(), com.cliffc.aa.Parse.fact(), com.cliffc.aa.node.NewObjNode.promote_forward(), and com.cliffc.aa.node.TestNodeSmall.testRecursiveDisplay().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_active()

void com.cliffc.aa.node.NewObjNode.create_active ( String  name,
Node  val,
Access  mutable 
)

Definition at line 57 of file NewObjNode.java.

57  {
58  assert def_idx(_ts.len())== _defs._len;
59  assert _ts.fld_find(name) == -1; // No dups
60  add_def(val);
61  setsm(_ts.add_fld(name,mutable,mutable==Access.Final ? val._val : Type.SCALAR));
62  Env.GVN.add_flow(this);
63  }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, com.cliffc.aa.node.Node._val, com.cliffc.aa.GVNGCM.add_flow(), com.cliffc.aa.node.NewNode< TypeStruct >.def_idx(), com.cliffc.aa.type.TypeFld.Access.Final, com.cliffc.aa.Env.GVN, com.cliffc.aa.type.Type< T extends Type< T >.SCALAR, and com.cliffc.aa.node.NewNode< TypeStruct >.setsm().

Referenced by com.cliffc.aa.node.NewObjNode.add_fun(), com.cliffc.aa.node.NewObjNode.create(), com.cliffc.aa.node.TestNode.testMonotonic(), com.cliffc.aa.TestLive.testNewObj(), com.cliffc.aa.Env.top_scope(), and com.cliffc.aa.Parse.tuple().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dead_type()

TypeStruct com.cliffc.aa.node.NewObjNode.dead_type ( )
package

Definition at line 144 of file NewObjNode.java.

144 { return TypeStruct.ANYSTRUCT; }

References com.cliffc.aa.type.TypeStruct.ANYSTRUCT.

◆ def_idx()

static int com.cliffc.aa.node.NewNode< T extends TypeObj< T >.def_idx ( int  fld)
staticpackageinherited

Definition at line 52 of file NewNode.java.

52 { return fld+1; } // Skip ctl in slot 0

◆ equals()

boolean com.cliffc.aa.node.NewNode< T extends TypeObj< T >.equals ( Object  o)
inherited

Definition at line 157 of file NewNode.java.

157 { return this==o; }

◆ escapees()

BitsAlias com.cliffc.aa.node.NewNode< T extends TypeObj< T >.escapees
packageinherited

Definition at line 98 of file NewNode.java.

98 { return _tptr._aliases; }

◆ exists()

boolean com.cliffc.aa.node.NewObjNode.exists ( String  name)

Definition at line 38 of file NewObjNode.java.

38 { return _ts.fld_find(name)!=-1; }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts.

Referenced by com.cliffc.aa.Env.lookup_scope().

Here is the caller graph for this function:

◆ fld()

Node com.cliffc.aa.node.NewNode< T extends TypeObj< T >.fld ( int  fld)
packageinherited

Definition at line 53 of file NewNode.java.

53 { return in(def_idx(fld)); } // Node for field#

◆ get()

Node com.cliffc.aa.node.NewObjNode.get ( String  name)

Definition at line 37 of file NewObjNode.java.

37 { int idx = _ts.fld_find(name); assert idx >= 0; return fld(idx); }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, and com.cliffc.aa.node.NewNode< TypeStruct >.fld().

Referenced by com.cliffc.aa.node.ScopeNode.get(), and com.cliffc.aa.Parse.stmt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hashCode()

int com.cliffc.aa.node.NewNode< T extends TypeObj< T >.hashCode
inherited

Definition at line 152 of file NewNode.java.

152 { return super.hashCode()+ _alias; }

◆ ideal_mono()

Node com.cliffc.aa.node.NewObjNode.ideal_mono ( )

Definition at line 116 of file NewObjNode.java.

116  {
117  // If the value lifts a final field, so does the default lift.
118  if( _val instanceof TypeTuple ) {
119  TypeObj ts3 = (TypeObj)((TypeTuple)_val).at(MEM_IDX);
120  if( ts3 != TypeObj.UNUSED ) {
121  TypeStruct ts4 = _ts.make_from_flds((TypeStruct)ts3);
122  TypeStruct ts5 = ts4.crush();
123  assert ts4.isa(ts5);
124  if( ts5 != _crushed && ts5.isa(_crushed) ) {
125  setsm(ts4);
127  return this;
128  }
129  }
130  }
131  return null;
132  }

References com.cliffc.aa.node.NewNode< TypeStruct >._crushed, com.cliffc.aa.node.NewNode< TypeStruct >._ts, com.cliffc.aa.GVNGCM.add_flow(), com.cliffc.aa.type.TypeStruct.crush(), com.cliffc.aa.Env.DEFMEM, com.cliffc.aa.Env.GVN, com.cliffc.aa.node.NewNode< TypeStruct >.setsm(), and com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.UNUSED.

Here is the call graph for this function:

◆ ideal_reduce()

Node com.cliffc.aa.node.NewNode< T extends TypeObj< T >.ideal_reduce
inherited

Definition at line 64 of file NewNode.java.

64  {
65  // If either the address or memory is not looked at then the memory
66  // contents are dead. The object might remain as a 'gensym' or 'sentinel'
67  // for identity tests.
68  if( _defs._len > 1 && captured() ) { kill2(); return this; }
69  return null;
70  }

◆ is_mutable()

boolean com.cliffc.aa.node.NewObjNode.is_mutable ( String  name)

Definition at line 39 of file NewObjNode.java.

39  {
40  return _ts.fld(_ts.fld_find(name))._access==Access.RW;
41  }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, and com.cliffc.aa.type.TypeFld.Access.RW.

Referenced by com.cliffc.aa.node.ScopeNode.is_mutable(), and com.cliffc.aa.Parse.stmt().

Here is the caller graph for this function:

◆ is_unused()

boolean com.cliffc.aa.node.NewNode< T extends TypeObj< T >.is_unused
packageinherited

Definition at line 100 of file NewNode.java.

100 { return _ts==dead_type(); }

◆ kill2()

void com.cliffc.aa.node.NewNode< T extends TypeObj< T >.kill2
packageinherited

Definition at line 102 of file NewNode.java.

102  {
103  unelock();
104  while( !is_dead() && _defs._len > 1 )
105  pop(); // Kill all fields except memory
106  _crushed = _ts = dead_type();
108  Env.DEFMEM.set_def(_alias,Node.con(TypeObj.UNUSED));
109  Env.GVN.revalive(this,ProjNode.proj(this,0),Env.DEFMEM);
110  if( is_dead() ) return;
111  for( Node use : _uses )
112  Env.GVN.add_flow_uses(use); // Get FPtrs from MrgProj, and dead Ptrs into New
113  }

◆ live_use()

TypeMem com.cliffc.aa.node.NewObjNode.live_use ( GVNGCM.Mode  opt_mode,
Node  def 
)

Definition at line 147 of file NewObjNode.java.

147  {
148  TypeObj to = _live.at(_alias);
149  if( !(to instanceof TypeStruct) ) return to.above_center() ? TypeMem.DEAD : TypeMem.ESCAPE;
150  int idx = _defs.find(def)-1;
151  Type t = ((TypeStruct)to).at(idx);
153  }

References com.cliffc.aa.node.NewNode< TypeStruct >._alias, com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.above_center(), com.cliffc.aa.type.Type< T extends Type< T >.above_center(), com.cliffc.aa.type.TypeMem.DEAD, com.cliffc.aa.type.TypeMem.ESCAPE, com.cliffc.aa.type.TypeMem.LESC_NO_DISP, and com.cliffc.aa.type.Type< T extends Type< T >.NSCALR.

Here is the call graph for this function:

◆ mrg()

MrgProjNode com.cliffc.aa.node.NewNode< T extends TypeObj< T >.mrg
inherited

Definition at line 158 of file NewNode.java.

158  {
159  Node ptr = _uses.at(0);
160  if( !(ptr instanceof MrgProjNode) ) ptr = _uses.at(1);
161  return (MrgProjNode)ptr;
162  }

◆ no_more_fields()

void com.cliffc.aa.node.NewObjNode.no_more_fields ( )

Definition at line 48 of file NewObjNode.java.

48 { setsm(_ts.close()); }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, and com.cliffc.aa.node.NewNode< TypeStruct >.setsm().

Referenced by com.cliffc.aa.Env.close_display(), com.cliffc.aa.TestLive.testNewObj(), com.cliffc.aa.node.TestNodeSmall.testRecursiveDisplay(), com.cliffc.aa.Env.top_scope(), and com.cliffc.aa.Parse.tuple().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ promote_forward()

void com.cliffc.aa.node.NewObjNode.promote_forward ( NewObjNode  parent)

Definition at line 94 of file NewObjNode.java.

94  {
95  assert parent != null;
96  TypeStruct ts = _ts;
97  for( int i=0; i<ts.len(); i++ ) {
98  Node n = fld(i);
99  if( n != null && n.is_forward_ref() ) {
100  // Remove current display from forward-refs display choices.
101  assert Env.LEX_DISPLAYS.test(_alias);
103  n.set_def(1,Node.con(tdisp)); // TODO: BUGGY? NEEDS TO CRAWL THE DISPLAY 1 LEVEL?
104  n.xval();
105  // Make field in the parent
106  TypeFld fld = ts.fld(i);
107  parent.create(fld._fld,n,fld._access);
108  // Stomp field locally to ANY
109  set_def(def_idx(i),Env.ANY);
110  setsm(_ts.set_fld(i,Type.ANY,Access.Final));
111  Env.GVN.add_flow_uses(n);
112  }
113  }
114  }

References com.cliffc.aa.node.NewNode< TypeStruct >._alias, com.cliffc.aa.node.NewNode< TypeStruct >._ts, com.cliffc.aa.GVNGCM.add_flow_uses(), com.cliffc.aa.Env.ANY, com.cliffc.aa.type.Type< T extends Type< T >.ANY, com.cliffc.aa.type.Bits< B extends Bits< B >.clear(), com.cliffc.aa.node.Node.con(), com.cliffc.aa.node.NewObjNode.create(), com.cliffc.aa.node.NewNode< TypeStruct >.def_idx(), com.cliffc.aa.type.TypeFld.Access.Final, com.cliffc.aa.node.NewNode< TypeStruct >.fld(), com.cliffc.aa.type.TypeStruct.fld(), com.cliffc.aa.Env.GVN, com.cliffc.aa.node.Node.is_forward_ref(), com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.ISUSED, com.cliffc.aa.type.TypeStruct.len(), com.cliffc.aa.Env.LEX_DISPLAYS, com.cliffc.aa.type.TypeMemPtr.make(), com.cliffc.aa.node.Node.set_def(), com.cliffc.aa.node.NewNode< TypeStruct >.setsm(), com.cliffc.aa.type.Bits< B extends Bits< B >.test(), and com.cliffc.aa.node.Node.xval().

Referenced by com.cliffc.aa.Env.close().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ptr()

ProjNode com.cliffc.aa.node.NewNode< T extends TypeObj< T >.ptr
packageinherited

Definition at line 163 of file NewNode.java.

163  {
164  Node ptr = _uses.at(0);
165  if( ptr instanceof MrgProjNode ) ptr = _uses.at(1);
166  return (ProjNode)ptr;
167  }

◆ set_name()

void com.cliffc.aa.node.NewObjNode.set_name ( TypeStruct  name)
package

Definition at line 45 of file NewObjNode.java.

45 { assert !name.above_center(); setsm(name); }

References com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.above_center(), and com.cliffc.aa.node.NewNode< TypeStruct >.setsm().

Referenced by com.cliffc.aa.node.IntrinsicNode.ideal_reduce().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sets()

final void com.cliffc.aa.node.NewNode< T extends TypeObj< T >.sets ( ts)
inherited

Definition at line 57 of file NewNode.java.

57  {
58  _ts = ts;
59  _crushed = ts.crush();
60  }

◆ setsm()

final void com.cliffc.aa.node.NewNode< T extends TypeObj< T >.setsm ( ts)
inherited

Definition at line 62 of file NewNode.java.

62 { assert ts.isa(_ts); sets(ts); }

◆ str()

String com.cliffc.aa.node.NewNode< T extends TypeObj< T >.str
packageinherited

Definition at line 50 of file NewNode.java.

50 { return "New"+_ts; } // Inline less-short name

◆ update() [1/2]

void com.cliffc.aa.node.NewObjNode.update ( int  fidx,
Access  mutable,
Node  val 
)

Definition at line 66 of file NewObjNode.java.

66  {
67  assert def_idx(_ts.len())== _defs._len;
68  set_def(def_idx(fidx),val);
69  sets(_ts.set_fld(fidx,mutable==Access.Final ? val._val : Type.SCALAR,mutable));
70  xval();
71  Env.GVN.add_flow_uses(this);
72  }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, com.cliffc.aa.node.Node._val, com.cliffc.aa.GVNGCM.add_flow_uses(), com.cliffc.aa.node.NewNode< TypeStruct >.def_idx(), com.cliffc.aa.type.TypeFld.Access.Final, com.cliffc.aa.Env.GVN, com.cliffc.aa.type.Type< T extends Type< T >.SCALAR, and com.cliffc.aa.node.NewNode< TypeStruct >.sets().

Here is the call graph for this function:

◆ update() [2/2]

void com.cliffc.aa.node.NewObjNode.update ( String  tok,
Access  mutable,
Node  val 
)

Definition at line 64 of file NewObjNode.java.

64 { update(_ts.fld_find(tok),mutable,val); }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, and com.cliffc.aa.node.NewObjNode.update().

Referenced by com.cliffc.aa.node.NewObjNode.add_fun(), com.cliffc.aa.Parse.func(), com.cliffc.aa.node.StoreNode.ideal_reduce(), and com.cliffc.aa.node.NewObjNode.update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ value()

Type com.cliffc.aa.node.NewNode< T extends TypeObj< T >.value ( GVNGCM.Mode  opt_mode)
inherited

Definition at line 81 of file NewNode.java.

81  {
82  return TypeTuple.make(Type.CTRL, is_unused() ? TypeObj.UNUSED : valueobj(),_tptr); // Complex obj, simple ptr.
83  }

◆ valueobj()

TypeObj com.cliffc.aa.node.NewObjNode.valueobj ( )
package

Definition at line 137 of file NewObjNode.java.

137  {
138  // Gather args and produce a TypeStruct
139  TypeFld[] ts = TypeFlds.get(_ts.len());
140  for( int i=0; i<ts.length; i++ )
141  ts[i] = _ts.fld(i).make_from((_ts._open && i>0) ? Type.ALL : fld(i)._val);
142  return _ts.make_from(ts); // Pick up field names and mods
143  }

References com.cliffc.aa.node.NewNode< TypeStruct >._ts, com.cliffc.aa.type.Type< T extends Type< T >.ALL, com.cliffc.aa.node.NewNode< TypeStruct >.fld(), and com.cliffc.aa.type.TypeFlds.get().

Here is the call graph for this function:

◆ xstr()

String com.cliffc.aa.node.NewNode< T extends TypeObj< T >.xstr
inherited

Definition at line 49 of file NewNode.java.

49 { return "New"+"*"+_alias; } // Self short name

Member Data Documentation

◆ _alias

int com.cliffc.aa.node.NewNode< T extends TypeObj< T >._alias
inherited

Definition at line 20 of file NewNode.java.

◆ _crushed

TypeObj com.cliffc.aa.node.NewNode< T extends TypeObj< T >._crushed
packageinherited

Definition at line 31 of file NewNode.java.

◆ _fld_starts

Parse [] com.cliffc.aa.node.NewObjNode._fld_starts

Definition at line 22 of file NewObjNode.java.

Referenced by com.cliffc.aa.Parse.tuple().

◆ _is_closure

final boolean com.cliffc.aa.node.NewObjNode._is_closure

Definition at line 21 of file NewObjNode.java.

Referenced by com.cliffc.aa.node.NewObjNode.NewObjNode().

◆ _tptr

TypeMemPtr com.cliffc.aa.node.NewNode< T extends TypeObj< T >._tptr
inherited

Definition at line 34 of file NewNode.java.

◆ _ts

T com.cliffc.aa.node.NewNode< T extends TypeObj< T >._ts
inherited

Definition at line 25 of file NewNode.java.


The documentation for this class was generated from the following file:
com.cliffc.aa.type.Type.NSCALR
static final Type NSCALR
Definition: Type.java:330
com.cliffc.aa.type.TypeFld.Access.Final
Final
Definition: TypeFld.java:112
com.cliffc.aa.type.TypeFlds.get
TypeFld[] get()
Definition: TypeFlds.java:59
com.cliffc.aa.type.TypeObj.above_center
boolean above_center()
Definition: TypeObj.java:77
com.cliffc.aa.type.TypeMem.DEAD
static final TypeMem DEAD
Definition: TypeMem.java:226
com.cliffc.aa.node.NewNode< TypeStruct >::captured
boolean captured()
Definition: NewNode.java:116
com.cliffc.aa.type.TypeMem
Memory type; the state of all of memory; memory edges order memory ops.
Definition: TypeMem.java:53
com.cliffc.aa.util.Util.eq
static boolean eq(String s0, String s1)
Definition: Util.java:16
com.cliffc.aa.node.NewObjNode.update
void update(String tok, Access mutable, Node val)
Definition: NewObjNode.java:64
com.cliffc.aa.type.Bits.clear
B clear(int bit)
Definition: Bits.java:255
com.cliffc.aa.GVNGCM.add_mono
public< N extends Node > N add_mono(N n)
Definition: GVNGCM.java:51
com.cliffc.aa.GVNGCM.add_flow_uses
void add_flow_uses(Node n)
Definition: GVNGCM.java:55
com.cliffc.aa.type.Type.SCALAR
static final Type SCALAR
Definition: Type.java:328
com.cliffc.aa.type.TypeObj.crush
TypeObj crush()
Definition: TypeObj.java:85
com.cliffc.aa.type.TypeFld
Definition: TypeFld.java:12
com.cliffc.aa.type.TypeFld.is_display_ptr
boolean is_display_ptr()
Definition: TypeFld.java:190
com.cliffc.aa.type.TypeMem.ESCAPE
static final TypeMem ESCAPE
Definition: TypeMem.java:227
com.cliffc.aa.type.Type
an implementation of language AA
Definition: Type.java:94
com.cliffc.aa.type.TypeStruct.crush
TypeStruct crush()
Definition: TypeStruct.java:1092
com.cliffc.aa.type.BitsAlias
Definition: BitsAlias.java:8
com.cliffc.aa.GVNGCM.revalive
void revalive(Node... ns)
Definition: GVNGCM.java:103
com.cliffc.aa.type.TypeTuple
Definition: TypeTuple.java:11
com.cliffc.aa.type.TypeFld.Access.RW
RW
Definition: TypeFld.java:111
com.cliffc.aa.type.TypeMem.ALLMEM
static final TypeMem ALLMEM
Definition: TypeMem.java:228
com.cliffc.aa.type.TypeFlds
Definition: TypeFlds.java:8
com.cliffc.aa.type.Type.ANY
static final Type ANY
Definition: Type.java:325
com.cliffc.aa.type.BitsAlias.new_alias
static int new_alias(int par)
Definition: BitsAlias.java:75
com.cliffc.aa.node.NewNode< TypeStruct >::setsm
final void setsm(T ts)
Definition: NewNode.java:62
com.cliffc.aa.type.TypeStruct
A memory-based collection of optionally named fields.
Definition: TypeStruct.java:50
com.cliffc.aa.type.Bits.test
static boolean test(long[] bits, int i)
Definition: Bits.java:224
com.cliffc.aa.type.Type.ALL
static final Type ALL
Definition: Type.java:324
com.cliffc.aa.node.NewNode< TypeStruct >::kill2
void kill2()
Definition: NewNode.java:102
com.cliffc.aa.node.NewNode< TypeStruct >::_tptr
TypeMemPtr _tptr
Definition: NewNode.java:34
com.cliffc.aa.type.BitsAlias.REC
static final int REC
Definition: BitsAlias.java:25
com.cliffc.aa.Env.GVN
static final GVNGCM GVN
Definition: Env.java:13
com.cliffc.aa.type.TypeObj
Definition: TypeObj.java:15
com.cliffc.aa.node.NewNode< TypeStruct >::def_idx
static int def_idx(int fld)
Definition: NewNode.java:52
com.cliffc.aa.type.Type.above_center
boolean above_center()
Definition: Type.java:741
com.cliffc.aa.node.NewNode< TypeStruct >::fld
Node fld(int fld)
Definition: NewNode.java:53
com.cliffc.aa.node.NewNode< TypeStruct >::_init
void _init(int alias, T ts)
Definition: NewNode.java:43
com.cliffc.aa.util.Util
Definition: Util.java:5
com.cliffc.aa.type.Type.CTRL
static final Type CTRL
Definition: Type.java:326
com.cliffc.aa.type.TypeObj.UNUSED
static final TypeObj UNUSED
Definition: TypeObj.java:46
com.cliffc.aa.type.TypeObj.ISUSED
static final TypeObj ISUSED
Definition: TypeObj.java:45
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(boolean any, Type[] ts)
Definition: TypeTuple.java:82
com.cliffc.aa.node.NewNode< TypeStruct >::ptr
ProjNode ptr()
Definition: NewNode.java:163
com.cliffc.aa.node.NewObjNode._is_closure
final boolean _is_closure
Definition: NewObjNode.java:21
com.cliffc.aa.node.NewNode< TypeStruct >::dead_type
abstract T dead_type()
com.cliffc.aa.type.TypeStr
Definition: TypeStr.java:14
com.cliffc.aa.node.NewNode< TypeStruct >::sets
final void sets(T ts)
Definition: NewNode.java:57
com.cliffc.aa.node.NewNode< TypeStruct >::_ts
T _ts
Definition: NewNode.java:25
com.cliffc.aa.type.TypeStruct.len
int len(TypeStruct tt)
Definition: TypeStruct.java:865
com.cliffc.aa.type.BitsAlias.make0
static BitsAlias make0(int bit)
Definition: BitsAlias.java:72
com.cliffc.aa.type.TypeStruct.fld
TypeFld fld(int idx)
Definition: TypeStruct.java:1012
com.cliffc.aa.node.NewNode< TypeStruct >::_crushed
TypeObj _crushed
Definition: NewNode.java:31
com.cliffc.aa.type.TypeMemPtr._aliases
BitsAlias _aliases
Definition: TypeMemPtr.java:16
com.cliffc.aa.type.TypeMem.LESC_NO_DISP
static final TypeMem LESC_NO_DISP
Definition: TypeMem.java:226
com.cliffc.aa.GVNGCM.add_reduce
public< N extends Node > N add_reduce(N n)
Definition: GVNGCM.java:49
com.cliffc.aa.Env.LEX_DISPLAYS
static BitsAlias LEX_DISPLAYS
Definition: Env.java:31
com.cliffc.aa.node.NewObjNode.create_active
void create_active(String name, Node val, Access mutable)
Definition: NewObjNode.java:57
com.cliffc.aa.GVNGCM.add_flow
public< N extends Node > N add_flow(N n)
Definition: GVNGCM.java:50
com.cliffc.aa.node.NewNode< TypeStruct >::_alias
int _alias
Definition: NewNode.java:20
com.cliffc.aa.type.TypeFld.Access
Definition: TypeFld.java:109
com.cliffc.aa.Env.ANY
static ConNode ANY
Definition: Env.java:24
com.cliffc.aa.type.TypeStruct.ANYSTRUCT
static final TypeStruct ANYSTRUCT
Definition: TypeStruct.java:227
com.cliffc.aa.node.NewNode< TypeStruct >::valueobj
abstract TypeObj valueobj()
com.cliffc.aa.Env.DEFMEM
static DefMemNode DEFMEM
Definition: Env.java:19
com.cliffc.aa.Env
Definition: Env.java:12
com.cliffc.aa.type.TypeMemPtr
Definition: TypeMemPtr.java:14
com.cliffc.aa.node.NewNode< TypeStruct >::is_unused
boolean is_unused()
Definition: NewNode.java:100
com.cliffc.aa.type.TypeMemPtr.make
static TypeMemPtr make(BitsAlias aliases, TypeObj obj)
Definition: TypeMemPtr.java:66