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

O 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