aa
TypeTuple.java
Go to the documentation of this file.
1 package com.cliffc.aa.type;
2 
3 import com.cliffc.aa.util.SB;
4 import com.cliffc.aa.util.VBitSet;
5 import static com.cliffc.aa.AA.*;
6 
7 // Internal fixed-length non-recursive tuples. Used for function arguments,
8 // and multi-arg results like IfNode and CallNode. This is not the same as a
9 // no-named-field TypeStruct, and is not exposed at the language level. With
10 // mixed tuple lengths, tuples are infinitely extended with ANY/ALL.
11 public class TypeTuple extends Type<TypeTuple> {
12  boolean _any;
13  public Type[] _ts; // The fixed known types
14  protected TypeTuple init( boolean any, Type[] ts ) {
15  super.init(TTUPLE,"");
16  _any = any;
17  _ts = ts;
18  return this;
19  }
20 
21  // If visit is null, children have had their hash already computed.
22  // If visit is not null, children need to be recursively visited.
23  private static int rot(int x, int k) { return (x<<k) | (x>>(32-k)); }
24  @SuppressWarnings("fallthrough")
25  @Override public int compute_hash( ) {
26  int hash = TTUPLE+(_any?0:1);
27  // Copied from http://burtleburtle.net/bob/c/lookup3.c
28  int i,a,b,c;
29  a = b = c = 0xdeadbeef + (_ts.length<<2) + hash;
30  for( i=0; i+2<_ts.length; i+=3 ) {
31  a += _ts[i+0]._hash;
32  b += _ts[i+1]._hash;
33  c += _ts[i+2]._hash;
34  a -= c; a ^= rot(c, 4); c += b;
35  b -= a; b ^= rot(a, 6); a += c;
36  c -= b; c ^= rot(b, 8); b += a;
37  a -= c; a ^= rot(c,16); c += b;
38  b -= a; b ^= rot(a,19); a += c;
39  c -= b; c ^= rot(b, 4); b += a;
40  }
41  switch(_ts.length-i) {
42  case 3: c += _ts[i+2]._hash;
43  case 2: b += _ts[i+1]._hash;
44  case 1: a += _ts[i+0]._hash;
45  c ^= b; c -= rot(b,14);
46  a ^= c; a -= rot(c,11);
47  b ^= a; b -= rot(a,25);
48  c ^= b; c -= rot(b,16);
49  a ^= c; a -= rot(c, 4);
50  b ^= a; b -= rot(a,14);
51  c ^= b; c -= rot(b,24);
52  case 0:
53  break;
54  }
55  return c;
56  }
57  @Override public boolean equals( Object o ) {
58  if( this==o ) return true;
59  if( !(o instanceof TypeTuple) ) return false;
60  TypeTuple t = (TypeTuple)o;
61  return _any==t._any && _hash == t._hash && Types.eq(_ts,t._ts);
62  }
63  // Never part of a cycle so the normal equals works
64  @Override public boolean cycle_equals( Type o ) { return equals(o); }
65  @Override public SB str( SB sb, VBitSet dups, TypeMem mem, boolean debug ) {
66  if( _any ) sb.p('~');
67  sb.p('(');
68  if( _ts!=null && _ts.length>0 ) { // No commas for zero-length
69  int j = _ts.length-1; // Find length of trailing equal parts
70  Type last = _ts[j]; // Last type
71  for( j--; j>0; j-- ) if( _ts[j] != last ) break;
72  _ts[0].str(sb,dups,mem,debug); // First type
73  for( int i=1; i<=j+1; i++ ) // All types up to trailing equal parts
74  _ts[i].str(sb.p(','),dups,mem,debug);
75  if( j+2<_ts.length-1 ) sb.p("..."); // Abbreviate tail
76  if( _ts.length> j+2 ) last.str(sb.p(','),dups,mem,debug);
77  }
78  return sb.p(')');
79  }
80 
81  static { new Pool(TTUPLE,new TypeTuple()); }
82  private static TypeTuple make( boolean any, Type[] ts ) {
83  TypeTuple t1 = POOLS[TTUPLE].malloc();
84  return t1.init(any,ts).hashcons_free();
85  }
86 
87  public static TypeTuple make0( boolean any, Type[] ts ) { return make(any,Types.hash_cons(ts)); }
88  public static TypeTuple make( Type[] ts ) { return make0(false,ts); }
89  public static TypeTuple make( ) { return make0(false,Types.get(0)); }
90  public static TypeTuple make( Type t0, Type t1 ) { return make0(false,Types.ts(t0,t1)); }
91  public static TypeTuple make( Type t0, Type t1, Type t2 ) { return make0(false,Types.ts(t0,t1,t2)); }
92  public static TypeTuple make( Type t0, Type t1, Type t2, Type t3 ) { return make0(false,Types.ts(t0,t1,t2,t3)); }
93  public static TypeTuple make( Type t0, Type t1, Type t2, Type t3, Type t4 ) { return make0(false,Types.ts(t0,t1,t2,t3,t4)); }
94  public static TypeTuple make( Type t0, Type t1, Type t2, Type t3, Type t4, Type t5 ) { return make0(false,Types.ts(t0,t1,t2,t3,t4,t5)); }
95 
96  // Make a Call args tuple from a Struct by adding Memory up front
97  public static TypeTuple make(TypeStruct ts) {
98  // TypeStruct includes a display/DSP_IDX, but what comes before
99  Type[] ts2 = Types.get(ts.len()+DSP_IDX);
100  ts2[CTL_IDX] = Type.CTRL;
101  ts2[MEM_IDX] = TypeMem.ALLMEM;
102  for( int i=0; i<ts.len(); i++ )
103  ts2[DSP_IDX+i] = ts.at(i);
104  return make(ts2);
105  }
106  public static TypeTuple make_args(Type[] ts) {
107  assert ts[MEM_IDX] instanceof TypeMem && ts[DSP_IDX].is_display_ptr();
108  return make(ts);
109  }
110  public TypeTuple make_from_arg(int idx, Type arg ) {
111  Type[] ts = Types.clone(_ts);
112  ts[idx]=arg;
113  return make0(_any,ts);
114  }
115 
116  public static TypeTuple make_args( ) { return make(Type.CTRL,TypeMem.ALLMEM,Type.ALL ); }
117  public static TypeTuple make_args(Type t2 ) { return make(Type.CTRL,TypeMem.ALLMEM,Type.ALL,t2); }
118  public static TypeTuple make_args(Type t2,Type t3 ) { return make(Type.CTRL,TypeMem.ALLMEM,Type.ALL,t2,t3); }
119  public static TypeTuple make_args(Type t2,Type t3,Type t4) { return make(Type.CTRL,TypeMem.ALLMEM,Type.ALL,t2,t3,t4); }
120  public static TypeTuple make_ret(Type trez) { return make(Type.CTRL,TypeMem.ANYMEM,trez); }
121 
122 
123  public static final TypeTuple IF_ALL = make(CTRL ,CTRL );
124  public static final TypeTuple IF_ANY = IF_ALL.dual();
125  public static final TypeTuple IF_TRUE = make(XCTRL,CTRL );
126  public static final TypeTuple IF_FALSE= make(CTRL ,XCTRL);
127 
128  // This is the starting state of the program; CTRL is active and memory is empty.
129  public static final TypeTuple START_STATE = make(CTRL, TypeMem.EMPTY);
130  public static final TypeTuple RET = make(CTRL, TypeMem.ALLMEM, ALL); // Type of RetNodes
131  public static final TypeTuple CALLE= make(CTRL, TypeMem.ALLMEM, ALL); // Type of CallEpiNodes
132  public static final TypeTuple TEST0= make(CTRL, TypeMem.MEM , TypeFunPtr.GENERIC_FUNPTR, SCALAR); // Call with 1 arg
133  public static final TypeTuple TEST1= make(CTRL, TypeMem.EMPTY, TypeFunPtr.GENERIC_FUNPTR, SCALAR); // Call with 1 arg
134  // Arguments
135  public static final TypeTuple NO_ARGS = make_args();
136  public static final TypeTuple INT64 = make_args(TypeInt.INT64); // {int->flt}
137  public static final TypeTuple FLT64 = make_args(TypeFlt.FLT64); // {flt->flt}
138  public static final TypeTuple STRPTR = make_args(TypeMemPtr.STRPTR);
139  public static final TypeTuple INT64_INT64= make_args(TypeInt.INT64,TypeInt.INT64); // {int int->int }
140  public static final TypeTuple FLT64_FLT64= make_args(TypeFlt.FLT64,TypeFlt.FLT64); // {flt flt->flt }
142  public static final TypeTuple SCALAR1 = make_args(SCALAR);
143  public static final TypeTuple LVAL_LEN = make_args(TypeMemPtr.ARYPTR); // Array
144  public static final TypeTuple LVAL_RD = make_args(TypeMemPtr.ARYPTR,TypeInt.INT64); // Array & index
145  public static final TypeTuple LVAL_WR = make_args(TypeMemPtr.ARYPTR,TypeInt.INT64,Type.SCALAR); // Array & index & element
146 
147  //
148  static final TypeTuple[] TYPES = new TypeTuple[]{
151  };
152 
153  // The length of Tuples is a constant, and so is its own dual. Otherwise
154  // just dual each element. Also flip the infinitely extended tail type.
155  @Override protected TypeTuple xdual() {
156  Type[] ts = Types.get(_ts.length);
157  for( int i=0; i<_ts.length; i++ ) ts[i] = _ts[i].dual();
158  ts = Types.hash_cons(ts);
159  return new TypeTuple().init(!_any, ts);
160  }
161  // Standard Meet. Tuples have an infinite extent of 'ALL' for low, or 'ANY'
162  // for high. After the meet, the infinite tail is trimmed.
163  @Override protected Type xmeet( Type t ) {
164  if( t._type != TTUPLE ) return ALL; // Tuples are internal types only, not user exposed
165  TypeTuple tt = (TypeTuple)t;
166  return _ts.length < tt._ts.length ? xmeet1(tt) : tt.xmeet1(this);
167  }
168 
169  // Meet 2 tuples, shorter is 'this'.
170  private TypeTuple xmeet1( TypeTuple tmax ) {
171  // Short is high; short extended by ANY so tail is a copy of long.
172  // Short is low ; short extended by ALL so tail is ALL so trimmed to short.
173  int len = _any ? tmax._ts.length : _ts.length;
174  // Meet of common elements
175  Type[] ts = Types.get(len);
176  for( int i=0; i<_ts.length; i++ ) ts[i] = _ts[i].meet(tmax._ts[i]);
177  // Elements only in the longer tuple.
178  if( len > _ts.length ) System.arraycopy(tmax._ts, _ts.length, ts, _ts.length, len - _ts.length);
179  return make0(_any&tmax._any,ts);
180  }
181 
182  public Type at( int idx ) { return _ts[idx]; } // Must be in-size
183  public int len() { return _ts.length; }
184 
185  // Same as the original, with one field changed
186  public TypeTuple set( int idx, Type t ) {
187  Type[] ts = Types.clone(_ts);
188  ts[idx]=t;
189  return make(ts);
190  }
191 
192 
193  @Override public boolean above_center() { return _any; }
194  // True if all internals may_be_con
195  @Override public boolean may_be_con() {
196  for( Type _t : _ts ) if( !_t.may_be_con() ) return false;
197  return true;
198  }
199  // True if all internals is_con
200  @Override public boolean is_con() {
201  for( Type _t : _ts ) if( !_t.is_con() ) return false;
202  return true;
203  }
204  @Override public boolean must_nil() { return false; }
205  @Override Type not_nil() { return this; }
206  @Override public Type meet_nil(Type t) { throw unimpl(); }
207 
208  public TypeTuple sharptr( TypeMem mem ) {
209  Type[] ts = Types.clone(_ts);
210  for( int i=0; i<ts.length; i++ )
211  ts[i] = mem.sharptr(ts[i]);
212  return make0(_any,ts);
213  }
214  @Override public Type simple_ptr() {
215  Type[] ts = Types.clone(_ts);
216  for( int i=0; i<ts.length; i++ )
217  ts[i] = ts[i].simple_ptr();
218  return make0(_any,ts);
219  }
220 
221  @Override public TypeTuple widen() {
222  Type[] ts = Types.get(_ts.length);
223  for( int i=0; i<ts.length; i++ )
224  ts[i] = _ts[i].widen();
225  return make(ts);
226  }
227 
228  // True if isBitShape on all bits
229  @Override public byte isBitShape(Type t) {
230  if( isa(t) ) return 0; // Can choose compatible format
231  if( t instanceof TypeTuple ) {
232  TypeTuple tt = (TypeTuple)t;
233  if( tt._ts.length != _ts.length ) return 99;
234  byte x;
235  for( int i=0; i<_ts.length; i++ )
236  if( (x=_ts[i].isBitShape(tt._ts[i])) != 0 )
237  return x;
238  return 0;
239  }
240  return 99;
241  }
242 }
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(Type t0, Type t1, Type t2, Type t3, Type t4)
Definition: TypeTuple.java:93
com.cliffc.aa.type.TypeFunPtr
Definition: TypeFunPtr.java:23
com.cliffc.aa.type.TypeTuple.make_args
static TypeTuple make_args(Type[] ts)
Definition: TypeTuple.java:106
com.cliffc.aa.type.Type< TypeTuple >::isa
boolean isa(Type t)
Definition: Type.java:623
com.cliffc.aa.type.TypeTuple.make_from_arg
TypeTuple make_from_arg(int idx, Type arg)
Definition: TypeTuple.java:110
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.type.TypeTuple.make_ret
static TypeTuple make_ret(Type trez)
Definition: TypeTuple.java:120
com.cliffc.aa.type.Type< TypeTuple >::SCALAR
static final Type SCALAR
Definition: Type.java:328
com.cliffc
com.cliffc.aa.type.Type._hash
int _hash
Definition: Type.java:97
com.cliffc.aa.type.TypeTuple.not_nil
Type not_nil()
Definition: TypeTuple.java:205
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(Type t0, Type t1, Type t2, Type t3, Type t4, Type t5)
Definition: TypeTuple.java:94
com.cliffc.aa.type.TypeTuple.START_STATE
static final TypeTuple START_STATE
Definition: TypeTuple.java:129
com.cliffc.aa.type.TypeTuple.LVAL_RD
static final TypeTuple LVAL_RD
Definition: TypeTuple.java:144
com.cliffc.aa.type.Types.eq
static boolean eq(Type[] ts0, Type[] ts1)
Definition: Types.java:158
com.cliffc.aa.type.TypeTuple.above_center
boolean above_center()
Definition: TypeTuple.java:193
com.cliffc.aa.util
Definition: AbstractEntry.java:1
com.cliffc.aa.type.TypeTuple.make_args
static TypeTuple make_args()
Definition: TypeTuple.java:116
com.cliffc.aa.type.TypeInt
Definition: TypeInt.java:9
com.cliffc.aa.type.TypeFunPtr.GENERIC_FUNPTR
static final TypeFunPtr GENERIC_FUNPTR
Definition: TypeFunPtr.java:80
com.cliffc.aa.type.Type
an implementation of language AA
Definition: Type.java:94
com.cliffc.aa.type.TypeFlt
Definition: TypeFlt.java:9
com.cliffc.aa.type.TypeTuple.meet_nil
Type meet_nil(Type t)
Definition: TypeTuple.java:206
com.cliffc.aa.type.TypeTuple.LVAL_WR
static final TypeTuple LVAL_WR
Definition: TypeTuple.java:145
com.cliffc.aa.type.TypeTuple.simple_ptr
Type simple_ptr()
Definition: TypeTuple.java:214
com.cliffc.aa.type.TypeTuple.str
SB str(SB sb, VBitSet dups, TypeMem mem, boolean debug)
Definition: TypeTuple.java:65
com.cliffc.aa.type.TypeTuple
Definition: TypeTuple.java:11
com.cliffc.aa.type.Type._type
byte _type
Definition: Type.java:98
com.cliffc.aa.type.TypeTuple.is_con
boolean is_con()
Definition: TypeTuple.java:200
com.cliffc.aa.type.TypeTuple.sharptr
TypeTuple sharptr(TypeMem mem)
Definition: TypeTuple.java:208
com.cliffc.aa.type.TypeMem.ALLMEM
static final TypeMem ALLMEM
Definition: TypeMem.java:228
com.cliffc.aa.type.Types.hash_cons
static Type[] hash_cons(Type[] ts)
Definition: Types.java:86
com.cliffc.aa.type.Type< TypeTuple >::meet
final Type meet(Type t)
Definition: Type.java:412
com.cliffc.aa.type.TypeStruct
A memory-based collection of optionally named fields.
Definition: TypeStruct.java:50
com.cliffc.aa.type.Type.str
SB str(SB sb, VBitSet dups, TypeMem mem, boolean debug)
Definition: Type.java:131
com.cliffc.aa.type.TypeTuple.IF_TRUE
static final TypeTuple IF_TRUE
Definition: TypeTuple.java:125
com.cliffc.aa.type.TypeMem.ANYMEM
static final TypeMem ANYMEM
Definition: TypeMem.java:228
com.cliffc.aa.type.Types
Definition: Types.java:9
com.cliffc.aa.type.TypeStruct.at
Type at(int idx)
Definition: TypeStruct.java:1013
com.cliffc.aa.type.Types.ts
static Type[] ts(Type t0)
Definition: Types.java:90
com.cliffc.aa.type.Type.ALL
static final Type ALL
Definition: Type.java:324
com.cliffc.aa.type.TypeTuple.IF_ANY
static final TypeTuple IF_ANY
Definition: TypeTuple.java:124
com.cliffc.aa.type.Type< TypeTuple >::TTUPLE
static final byte TTUPLE
Definition: Type.java:266
com.cliffc.aa.type.TypeTuple.SCALAR1
static final TypeTuple SCALAR1
Definition: TypeTuple.java:142
com.cliffc.aa.type.TypeTuple.TYPES
static final TypeTuple[] TYPES
Definition: TypeTuple.java:148
com.cliffc.aa.type.TypeInt.INT64
static final TypeInt INT64
Definition: TypeInt.java:39
com.cliffc.aa.type.TypeTuple.xmeet1
TypeTuple xmeet1(TypeTuple tmax)
Definition: TypeTuple.java:170
com.cliffc.aa.type.Types.clone
static Type[] clone(Type[] ts)
Definition: Types.java:144
com.cliffc.aa.type.TypeTuple.RET
static final TypeTuple RET
Definition: TypeTuple.java:130
com.cliffc.aa.type.Type.CTRL
static final Type CTRL
Definition: Type.java:326
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make()
Definition: TypeTuple.java:89
com.cliffc.aa.type.TypeTuple.len
int len()
Definition: TypeTuple.java:183
com.cliffc.aa.type.TypeTuple.init
TypeTuple init(boolean any, Type[] ts)
Definition: TypeTuple.java:14
com.cliffc.aa.type.TypeTuple.make0
static TypeTuple make0(boolean any, Type[] ts)
Definition: TypeTuple.java:87
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(boolean any, Type[] ts)
Definition: TypeTuple.java:82
com.cliffc.aa.type.TypeTuple.FLT64
static final TypeTuple FLT64
Definition: TypeTuple.java:137
com.cliffc.aa.type.Types.get
Type[] get()
Definition: Types.java:66
com.cliffc.aa.type.TypeMemPtr.ARYPTR
static final TypeMemPtr ARYPTR
Definition: TypeMemPtr.java:95
com.cliffc.aa.type.TypeTuple.IF_ALL
static final TypeTuple IF_ALL
Definition: TypeTuple.java:123
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(Type t0, Type t1, Type t2, Type t3)
Definition: TypeTuple.java:92
com.cliffc.aa.type.TypeTuple._any
boolean _any
Definition: TypeTuple.java:12
com.cliffc.aa.type.Type< TypeTuple >::XCTRL
static final Type XCTRL
Definition: Type.java:327
com.cliffc.aa.type.TypeTuple.make_args
static TypeTuple make_args(Type t2, Type t3)
Definition: TypeTuple.java:118
com.cliffc.aa.type.TypeMem.sharptr
Type sharptr(Type ptr)
Definition: TypeMem.java:419
com.cliffc.aa.type.TypeTuple.equals
boolean equals(Object o)
Definition: TypeTuple.java:57
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(Type[] ts)
Definition: TypeTuple.java:88
com.cliffc.aa.util.VBitSet
Definition: VBitSet.java:5
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(TypeStruct ts)
Definition: TypeTuple.java:97
com.cliffc.aa.type.Type.hashcons_free
final T hashcons_free()
Definition: Type.java:153
com.cliffc.aa.util.SB
Tight/tiny StringBuilder wrapper.
Definition: SB.java:8
com.cliffc.aa.type.TypeTuple.widen
TypeTuple widen()
Definition: TypeTuple.java:221
com.cliffc.aa.type.TypeTuple.LVAL_LEN
static final TypeTuple LVAL_LEN
Definition: TypeTuple.java:143
com.cliffc.aa.AA
an implementation of language AA
Definition: AA.java:9
com.cliffc.aa.type.TypeStruct.len
int len(TypeStruct tt)
Definition: TypeStruct.java:865
com.cliffc.aa.type.TypeTuple.isBitShape
byte isBitShape(Type t)
Definition: TypeTuple.java:229
com.cliffc.aa.type.TypeTuple.compute_hash
int compute_hash()
Definition: TypeTuple.java:25
com.cliffc.aa.type.TypeTuple.xmeet
Type xmeet(Type t)
Definition: TypeTuple.java:163
com.cliffc.aa.type.Type.is_display_ptr
boolean is_display_ptr()
Definition: Type.java:941
com.cliffc.aa
Definition: AA.java:1
com.cliffc.aa.type.TypeTuple.xdual
TypeTuple xdual()
Definition: TypeTuple.java:155
com.cliffc.aa.type.TypeTuple.STRPTR
static final TypeTuple STRPTR
Definition: TypeTuple.java:138
com.cliffc.aa.type.TypeTuple.INT64_INT64
static final TypeTuple INT64_INT64
Definition: TypeTuple.java:139
com.cliffc.aa.type.TypeTuple.make_args
static TypeTuple make_args(Type t2)
Definition: TypeTuple.java:117
com.cliffc.aa.util.SB.p
SB p(String s)
Definition: SB.java:13
com.cliffc.aa.type.TypeTuple.at
Type at(int idx)
Definition: TypeTuple.java:182
com.cliffc.aa.type.TypeTuple.CALLE
static final TypeTuple CALLE
Definition: TypeTuple.java:131
com.cliffc.aa.type.TypeTuple.OOP_OOP
static final TypeTuple OOP_OOP
Definition: TypeTuple.java:141
com.cliffc.aa.type.TypeTuple.may_be_con
boolean may_be_con()
Definition: TypeTuple.java:195
com.cliffc.aa.type.Type.dual
final T dual()
Definition: Type.java:361
com.cliffc.aa.type.TypeTuple._ts
Type[] _ts
Definition: TypeTuple.java:13
com.cliffc.aa.type.Type< TypeTuple >::POOLS
static final Pool[] POOLS
Definition: Type.java:281
com.cliffc.aa.type.TypeTuple.cycle_equals
boolean cycle_equals(Type o)
Definition: TypeTuple.java:64
com.cliffc.aa.type.TypeTuple.FLT64_FLT64
static final TypeTuple FLT64_FLT64
Definition: TypeTuple.java:140
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(Type t0, Type t1, Type t2)
Definition: TypeTuple.java:91
com.cliffc.aa.type.TypeMemPtr.STRPTR
static final TypeMemPtr STRPTR
Definition: TypeMemPtr.java:97
com.cliffc.aa.type.TypeTuple.make_args
static TypeTuple make_args(Type t2, Type t3, Type t4)
Definition: TypeTuple.java:119
com.cliffc.aa.type.TypeTuple.INT64
static final TypeTuple INT64
Definition: TypeTuple.java:136
com.cliffc.aa.type.TypeTuple.rot
static int rot(int x, int k)
Definition: TypeTuple.java:23
com
com.cliffc.aa.type.TypeMem.MEM
static final TypeMem MEM
Definition: TypeMem.java:224
com.cliffc.aa.type.TypeTuple.NO_ARGS
static final TypeTuple NO_ARGS
Definition: TypeTuple.java:135
com.cliffc.aa.type.TypeTuple.IF_FALSE
static final TypeTuple IF_FALSE
Definition: TypeTuple.java:126
com.cliffc.aa.type.TypeMem.EMPTY
static final TypeMem EMPTY
Definition: TypeMem.java:223
com.cliffc.aa.type.TypeMemPtr
Definition: TypeMemPtr.java:14
com.cliffc.aa.type.TypeFlt.FLT64
static final TypeFlt FLT64
Definition: TypeFlt.java:38
com.cliffc.aa.type.TypeTuple.make
static TypeTuple make(Type t0, Type t1)
Definition: TypeTuple.java:90
com.cliffc.aa.type.TypeTuple.must_nil
boolean must_nil()
Definition: TypeTuple.java:204
com.cliffc.aa.type.TypeTuple.TEST1
static final TypeTuple TEST1
Definition: TypeTuple.java:133
com.cliffc.aa.type.TypeMemPtr.ISUSED0
static final TypeMemPtr ISUSED0
Definition: TypeMemPtr.java:91
com.cliffc.aa.type.TypeTuple.TEST0
static final TypeTuple TEST0
Definition: TypeTuple.java:132