aa
com.cliffc.aa.type.TypeLive Class Reference
Inheritance diagram for com.cliffc.aa.type.TypeLive:
[legend]
Collaboration diagram for com.cliffc.aa.type.TypeLive:
[legend]

Public Member Functions

boolean above_center ()
 
TypeObj crush ()
 
boolean cycle_equals (Type o)
 
boolean equals (Object o)
 
boolean is_con ()
 
boolean is_escape ()
 
boolean is_ret ()
 
TypeLive lmeet (TypeLive lv)
 
boolean may_be_con ()
 
boolean may_nil ()
 
Type meet_nil (Type t)
 
boolean must_nil ()
 
SB str (SB sb, VBitSet dups, TypeMem mem, boolean debug)
 
TypeObj update (Access fin, String fld, Type val)
 
TypeObj update (TypeInt idx, Type val)
 
void walk (Predicate< Type > p)
 
TypeObj widen ()
 

Static Public Attributes

static final TypeLive DEAD = LIVE_BOT.dual()
 
static final TypeObj ISUSED
 
static final TypeLive LIVE_BOT =make(false,FLAG_ESCAPE+FLAG_WITH_DISP)
 
static final TypeObj OBJ
 
static final TypeObj UNUSED
 
static final TypeObj XOBJ
 

Protected Member Functions

init (byte type, String name, boolean any, boolean use)
 
TypeLive xdual ()
 
Type xmeet (Type t)
 

Package Functions

int compute_hash ()
 
TypeObj flatten_fields ()
 
boolean is_display ()
 
TypeObj remove_other_flds (String fld, Type live)
 

Static Package Functions

 [static initializer]
 

Package Attributes

boolean _any
 
int _flags
 
boolean _use
 

Static Package Attributes

static final TypeLive ESC_DISP =make(false,FLAG_ESCAPE)
 
static final TypeLive ESCAPE = make(false,FLAG_ESCAPE+FLAG_WITH_DISP)
 
static final TypeLive LIVE = make(false,FLAG_WITH_DISP)
 
static final TypeLive NO_DISP = make(false,0 )
 
static final TypeObj[] TYPES
 

Private Member Functions

TypeLive init (boolean any, int flags)
 

Static Private Member Functions

static TypeLive make (boolean any, int flags)
 

Static Private Attributes

static final int FLAG_ESCAPE =1
 
static final int FLAG_WITH_DISP =2
 
static final TypeLive[] LIVES = new TypeLive[]{NO_DISP,ESC_DISP,LIVE,ESCAPE}
 
static final String[] STRS = new String[]{"!dsp","esc!dsp","live","escp"}
 

Detailed Description

Definition at line 19 of file TypeLive.java.

Member Function Documentation

◆ [static initializer]()

com.cliffc.aa.type.TypeLive.[static initializer]
staticpackage

◆ above_center()

boolean com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.above_center
inherited

Definition at line 77 of file TypeObj.java.

77 { return _any; }

◆ compute_hash()

int com.cliffc.aa.type.TypeLive.compute_hash ( )
package

Definition at line 26 of file TypeLive.java.

26 { return super.compute_hash() + _flags; }

References com.cliffc.aa.type.TypeLive._flags.

◆ crush()

TypeObj com.cliffc.aa.type.TypeLive.crush ( )

Definition at line 94 of file TypeLive.java.

94 { return this; }

◆ cycle_equals()

boolean com.cliffc.aa.type.TypeLive.cycle_equals ( Type  o)

Definition at line 32 of file TypeLive.java.

32 { return equals(o); }

References com.cliffc.aa.type.TypeLive.equals().

Here is the call graph for this function:

◆ equals()

boolean com.cliffc.aa.type.TypeLive.equals ( Object  o)

Definition at line 27 of file TypeLive.java.

27  {
28  if( this==o ) return true;
29  if( !(o instanceof TypeLive) || !super.equals(o) ) return false;
30  return _flags==((TypeLive)o)._flags;
31  }

References com.cliffc.aa.type.TypeLive._flags.

Referenced by com.cliffc.aa.type.TypeLive.cycle_equals().

Here is the caller graph for this function:

◆ flatten_fields()

TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.flatten_fields
packageinherited

Definition at line 74 of file TypeObj.java.

74 { return this; }

◆ init() [1/2]

TypeLive com.cliffc.aa.type.TypeLive.init ( boolean  any,
int  flags 
)
private

Definition at line 21 of file TypeLive.java.

21  {
22  super.init(TLIVE,"",any,any);
23  _flags = flags;
24  return this;
25  }

References com.cliffc.aa.type.TypeLive._flags, and com.cliffc.aa.type.TypeLive.init().

Referenced by com.cliffc.aa.type.TypeLive.init(), com.cliffc.aa.type.TypeLive.make(), and com.cliffc.aa.type.TypeLive.xdual().

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

◆ init() [2/2]

O com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.init ( byte  type,
String  name,
boolean  any,
boolean  use 
)
protectedinherited

Definition at line 19 of file TypeObj.java.

19  {
20  super.init(type,name);
21  _any=any;
22  _use=use;
23  return (O)this;
24  }

◆ is_con()

boolean com.cliffc.aa.type.TypeLive.is_con ( )

Definition at line 97 of file TypeLive.java.

97 { return false; }

◆ is_display()

boolean com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.is_display
packageinherited

Definition at line 50 of file TypeObj.java.

50 { return false; }

◆ is_escape()

boolean com.cliffc.aa.type.TypeLive.is_escape ( )

Definition at line 48 of file TypeLive.java.

48 { return (_flags&FLAG_ESCAPE)!=0; }

References com.cliffc.aa.type.TypeLive._flags, and com.cliffc.aa.type.TypeLive.FLAG_ESCAPE.

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

Here is the caller graph for this function:

◆ is_ret()

boolean com.cliffc.aa.type.TypeLive.is_ret ( )

◆ lmeet()

TypeLive com.cliffc.aa.type.TypeLive.lmeet ( TypeLive  lv)

Definition at line 88 of file TypeLive.java.

88  {
89  if( this.above_center() ) return lv.above_center() ? (TypeLive)xmeet(lv) : lv;
90  if( lv .above_center() ) return this;
91  return LIVES[_flags|lv._flags];
92  }

References com.cliffc.aa.type.TypeLive._flags, com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.above_center(), com.cliffc.aa.type.TypeObj< TypeLive >.above_center(), com.cliffc.aa.type.TypeLive.LIVES, and com.cliffc.aa.type.TypeLive.xmeet().

Here is the call graph for this function:

◆ make()

static TypeLive com.cliffc.aa.type.TypeLive.make ( boolean  any,
int  flags 
)
staticprivate

Definition at line 40 of file TypeLive.java.

40  {
41  TypeLive t1 = POOLS[TLIVE].malloc();
42  return t1.init(any,flags).hashcons_free();
43  }

References com.cliffc.aa.type.TypeLive.init().

Referenced by com.cliffc.aa.type.TypeLive.xmeet().

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

◆ may_be_con()

boolean com.cliffc.aa.type.TypeLive.may_be_con ( )

Definition at line 96 of file TypeLive.java.

96 { return false; }

◆ may_nil()

boolean com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.may_nil
inherited

Definition at line 81 of file TypeObj.java.

81 { return false; }

◆ meet_nil()

Type com.cliffc.aa.type.TypeLive.meet_nil ( Type  t)

Definition at line 98 of file TypeLive.java.

98 { return this; }

◆ must_nil()

boolean com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.must_nil
inherited

Definition at line 80 of file TypeObj.java.

80 { return false; }

◆ remove_other_flds()

TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.remove_other_flds ( String  fld,
Type  live 
)
packageinherited

Definition at line 75 of file TypeObj.java.

75 { return UNUSED; }

◆ str()

SB com.cliffc.aa.type.TypeLive.str ( SB  sb,
VBitSet  dups,
TypeMem  mem,
boolean  debug 
)

Definition at line 33 of file TypeLive.java.

33  {
34  if( this==DEAD ) return sb.p("DEAD");
35  if( _any ) sb.p('~');
36  return sb.p(STRS[_flags]);
37  }

References com.cliffc.aa.type.TypeObj< TypeLive >._any, com.cliffc.aa.type.TypeLive._flags, com.cliffc.aa.type.TypeLive.DEAD, com.cliffc.aa.util.SB.p(), and com.cliffc.aa.type.TypeLive.STRS.

Here is the call graph for this function:

◆ update() [1/2]

TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.update ( Access  fin,
String  fld,
Type  val 
)
inherited

Definition at line 67 of file TypeObj.java.

67 { return this; }

◆ update() [2/2]

TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.update ( TypeInt  idx,
Type  val 
)
inherited

Definition at line 69 of file TypeObj.java.

69  {
70  if( this==ISUSED || this==OBJ ) return this;
71  return TypeAry.ARY.dual().update(idx,val);
72  }

◆ walk()

void com.cliffc.aa.type.TypeLive.walk ( Predicate< Type p)

Definition at line 99 of file TypeLive.java.

99 { p.test(this); }

◆ widen()

TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.widen
inherited

Definition at line 76 of file TypeObj.java.

76 { return ISUSED; }

◆ xdual()

TypeLive com.cliffc.aa.type.TypeLive.xdual ( )
protected

Definition at line 61 of file TypeLive.java.

61 { return new TypeLive().init(!_any,_flags); }

References com.cliffc.aa.type.TypeObj< TypeLive >._any, com.cliffc.aa.type.TypeLive._flags, and com.cliffc.aa.type.TypeLive.init().

Here is the call graph for this function:

◆ xmeet()

Type com.cliffc.aa.type.TypeLive.xmeet ( Type  t)
protected

Definition at line 62 of file TypeLive.java.

62  {
63  switch( t._type ) {
64  case TLIVE: break;
65  case TARY:
66  case TSTR:
67  case TSTRUCT:return OBJ;
68  case TOBJ: return t.xmeet(this);
69  case TFUNSIG:
70  case TTUPLE:
71  case TFUNPTR:
72  case TMEMPTR:
73  case TFLT:
74  case TINT:
75  case TRPC:
76  case TMEM: return ALL;
77  default: throw typerr(t);
78  }
79  TypeLive ts = (TypeLive)t;
80  boolean any = _any&ts._any;
81  int f0 = _any ? 0 : _flags;
82  int f1 = ts._any ? 0 : ts._flags;
83  int flags = any ? (_flags&ts._flags) : (f0|f1);
84  return make(any,flags);
85  }

References com.cliffc.aa.type.TypeObj< TypeLive >._any, com.cliffc.aa.type.TypeObj< O extends TypeObj< O >._any, com.cliffc.aa.type.TypeLive._flags, com.cliffc.aa.type.Type< T extends Type< T >._type, com.cliffc.aa.type.TypeLive.make(), com.cliffc.aa.type.TypeObj< TypeLive >.OBJ, and com.cliffc.aa.type.Type< T extends Type< T >.xmeet().

Referenced by com.cliffc.aa.type.TypeLive.lmeet().

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

Member Data Documentation

◆ _any

boolean com.cliffc.aa.type.TypeObj< O extends TypeObj< O >._any
packageinherited

Definition at line 16 of file TypeObj.java.

◆ _flags

◆ _use

boolean com.cliffc.aa.type.TypeObj< O extends TypeObj< O >._use
packageinherited

Definition at line 17 of file TypeObj.java.

◆ DEAD

final TypeLive com.cliffc.aa.type.TypeLive.DEAD = LIVE_BOT.dual()
static

◆ ESC_DISP

final TypeLive com.cliffc.aa.type.TypeLive.ESC_DISP =make(false,FLAG_ESCAPE)
staticpackage

Definition at line 54 of file TypeLive.java.

◆ ESCAPE

final TypeLive com.cliffc.aa.type.TypeLive.ESCAPE = make(false,FLAG_ESCAPE+FLAG_WITH_DISP)
staticpackage

Definition at line 56 of file TypeLive.java.

◆ FLAG_ESCAPE

final int com.cliffc.aa.type.TypeLive.FLAG_ESCAPE =1
staticprivate

Definition at line 47 of file TypeLive.java.

Referenced by com.cliffc.aa.type.TypeLive.is_escape().

◆ FLAG_WITH_DISP

final int com.cliffc.aa.type.TypeLive.FLAG_WITH_DISP =2
staticprivate

Definition at line 50 of file TypeLive.java.

Referenced by com.cliffc.aa.type.TypeLive.is_ret().

◆ ISUSED

final TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.ISUSED
staticinherited

Definition at line 45 of file TypeObj.java.

◆ LIVE

final TypeLive com.cliffc.aa.type.TypeLive.LIVE = make(false,FLAG_WITH_DISP)
staticpackage

◆ LIVE_BOT

final TypeLive com.cliffc.aa.type.TypeLive.LIVE_BOT =make(false,FLAG_ESCAPE+FLAG_WITH_DISP)
static

Definition at line 58 of file TypeLive.java.

◆ LIVES

final TypeLive [] com.cliffc.aa.type.TypeLive.LIVES = new TypeLive[]{NO_DISP,ESC_DISP,LIVE,ESCAPE}
staticprivate

Definition at line 86 of file TypeLive.java.

Referenced by com.cliffc.aa.type.TypeLive.lmeet().

◆ NO_DISP

final TypeLive com.cliffc.aa.type.TypeLive.NO_DISP = make(false,0 )
staticpackage

Definition at line 53 of file TypeLive.java.

◆ OBJ

final TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.OBJ
staticinherited

Definition at line 44 of file TypeObj.java.

◆ STRS

final String [] com.cliffc.aa.type.TypeLive.STRS = new String[]{"!dsp","esc!dsp","live","escp"}
staticprivate

Definition at line 87 of file TypeLive.java.

Referenced by com.cliffc.aa.type.TypeLive.str().

◆ TYPES

final TypeObj [] com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.TYPES
staticpackageinherited

Definition at line 48 of file TypeObj.java.

◆ UNUSED

final TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.UNUSED
staticinherited

Definition at line 46 of file TypeObj.java.

◆ XOBJ

final TypeObj com.cliffc.aa.type.TypeObj< O extends TypeObj< O >.XOBJ
staticinherited

Definition at line 47 of file TypeObj.java.


The documentation for this class was generated from the following file:
com.cliffc.aa.type.TypeObj< TypeLive >::above_center
boolean above_center()
Definition: TypeObj.java:77
com.cliffc.aa.type.TypeObj< TypeLive >::_any
boolean _any
Definition: TypeObj.java:16
com.cliffc.aa.type.TypeLive.FLAG_WITH_DISP
static final int FLAG_WITH_DISP
Definition: TypeLive.java:50
com.cliffc.aa.type.TypeLive.xmeet
Type xmeet(Type t)
Definition: TypeLive.java:62
com.cliffc.aa.type.TypeLive.DEAD
static final TypeLive DEAD
Definition: TypeLive.java:59
com.cliffc.aa.type.TypeObj< TypeLive >::OBJ
static final TypeObj OBJ
Definition: TypeObj.java:44
com.cliffc.aa.type.TypeObj< TypeLive >::UNUSED
static final TypeObj UNUSED
Definition: TypeObj.java:46
com.cliffc.aa.type.TypeObj< TypeLive >::ISUSED
static final TypeObj ISUSED
Definition: TypeObj.java:45
com.cliffc.aa.type.TypeLive.make
static TypeLive make(boolean any, int flags)
Definition: TypeLive.java:40
com.cliffc.aa.type.TypeLive._flags
int _flags
Definition: TypeLive.java:20
com.cliffc.aa.type.TypeLive.STRS
static final String[] STRS
Definition: TypeLive.java:87
com.cliffc.aa.type.TypeLive.LIVES
static final TypeLive[] LIVES
Definition: TypeLive.java:86
com.cliffc.aa.type.TypeObj< TypeLive >::_use
boolean _use
Definition: TypeObj.java:17
com.cliffc.aa.type.TypeLive.FLAG_ESCAPE
static final int FLAG_ESCAPE
Definition: TypeLive.java:47
com.cliffc.aa.type.TypeObj.xmeet
Type xmeet(Type t)
Definition: TypeObj.java:53
com.cliffc.aa.type.TypeLive.equals
boolean equals(Object o)
Definition: TypeLive.java:27