aa
com.cliffc.aa.HM.HM.Root Class Reference
Inheritance diagram for com.cliffc.aa.HM.HM.Root:
[legend]
Collaboration diagram for com.cliffc.aa.HM.HM.Root:
[legend]

Public Member Functions

String p ()
 
final String toString ()
 

Package Functions

 Root (Syntax body)
 
void add_hm_work (Worklist work)
 
void add_val_work (Syntax child, Worklist work)
 
T2 debug_find ()
 
T2 find ()
 
Type flow_type ()
 
boolean hm (Worklist work)
 
boolean more_work (Worklist work)
 
final boolean more_work_impl (Worklist work)
 
final SB p0 (SB sb, VBitSet dups)
 
SB p1 (SB sb)
 
SB p2 (SB sb, VBitSet dups)
 
void prep_lookup_deps (Ident id)
 
int prep_tree (Syntax par, VStack nongen, Worklist work)
 
final void prep_tree_impl (Syntax par, VStack nongen, Worklist work, T2 t)
 
SB str (SB sb)
 
Type val (Worklist work)
 

Static Package Functions

static Type widen (T2 t2)
 

Package Attributes

final Syntax[] _args
 
Type _flow
 
final Syntax _fun
 
T2 _hmt
 
VStack _nongen
 
Syntax _par
 

Static Package Attributes

static final Syntax[] NARGS = new Syntax[0]
 

Static Private Member Functions

static Type add_sig (Type t)
 

Static Private Attributes

static final HashMap< T2, TypeT2MAP = new HashMap<>()
 
static final NonBlockingHashMapLong< String > WDUPS = new NonBlockingHashMapLong<>()
 

Detailed Description

Definition at line 735 of file HM.java.

Constructor & Destructor Documentation

◆ Root()

com.cliffc.aa.HM.HM.Root.Root ( Syntax  body)
package

Definition at line 737 of file HM.java.

737 { super(body); }

Member Function Documentation

◆ add_hm_work()

void com.cliffc.aa.HM.HM.Root.add_hm_work ( Worklist  work)
package

Reimplemented from com.cliffc.aa.HM.HM.Apply.

Definition at line 740 of file HM.java.

740 { }

◆ add_sig()

static Type com.cliffc.aa.HM.HM.Root.add_sig ( Type  t)
staticprivate

Definition at line 776 of file HM.java.

776  {
777  if( t instanceof TypeFunPtr ) {
778  TypeFunPtr fun = (TypeFunPtr)t;
779  Type rez = Type.XSCALAR;
780  for( int fidx : fun._fidxs )
781  rez = rez.meet(Lambda.FUNS.get(fidx).apply(NARGS));
782  Type rez2 = add_sig(rez);
784  } else {
785  return t;
786  }
787  }

References com.cliffc.aa.type.TypeFunPtr._fidxs, com.cliffc.aa.HM.HM.Lambda.FUNS, com.cliffc.aa.type.TypeFunSig.make(), com.cliffc.aa.type.TypeTuple.make_args(), com.cliffc.aa.type.TypeTuple.make_ret(), com.cliffc.aa.type.Type< T extends Type< T >.meet(), com.cliffc.aa.HM.HM.Root.NARGS, and com.cliffc.aa.type.Type< T extends Type< T >.XSCALAR.

Referenced by com.cliffc.aa.HM.HM.Root.flow_type().

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

◆ add_val_work()

void com.cliffc.aa.HM.HM.Apply.add_val_work ( Syntax  child,
Worklist  work 
)
packageinherited

Reimplemented from com.cliffc.aa.HM.HM.Syntax.

Definition at line 693 of file HM.java.

693  {
694  // If function changes type, recompute self
695  if( child==_fun ) work.push(this);
696  // If an argument changes type, adjust the lambda arg types
697  Type flow = _fun._flow;
698  if( flow.above_center() ) return;
699  if( !(flow instanceof TypeFunPtr) ) return;
700  // Meet the actuals over the formals.
701  for( int fidx : ((TypeFunPtr)flow)._fidxs ) {
702  Lambda fun = Lambda.FUNS.get(fidx);
703  if( fun!=null ) {
704  fun.find().push_update(this); // Discovered as call-site; if the Lambda changes the Apply needs to be revisited.
705  for( int i=0; i<fun._types.length; i++ ) {
706  Type formal = fun._types[i];
707  Type actual = this instanceof Root ? Root.widen(fun.targ(i)) : _args[i]._flow;
708  Type rez = formal.meet(actual);
709  if( formal != rez ) {
710  fun._types[i] = rez;
711  work.addAll(fun.targ(i)._deps);
712  work.push(fun._body);
713  if( i==0 && fun instanceof If ) work.push(fun); // Specifically If might need more unification
714  }
715  }
716  }
717  }
718  }

References com.cliffc.aa.HM.HM.Apply._args, com.cliffc.aa.HM.HM.Lambda._body, com.cliffc.aa.HM.HM.T2._deps, com.cliffc.aa.HM.HM.Syntax._flow, com.cliffc.aa.HM.HM.Apply._fun, com.cliffc.aa.HM.HM.Lambda._types, com.cliffc.aa.type.Type< T extends Type< T >.above_center(), com.cliffc.aa.HM.HM.Worklist.addAll(), com.cliffc.aa.HM.HM.Syntax.find(), com.cliffc.aa.HM.HM.Lambda.FUNS, com.cliffc.aa.type.Type< T extends Type< T >.meet(), com.cliffc.aa.HM.HM.Worklist.push(), com.cliffc.aa.HM.HM.T2.push_update(), com.cliffc.aa.HM.HM.Lambda.targ(), and com.cliffc.aa.HM.HM.Root.widen().

Here is the call graph for this function:

◆ debug_find()

T2 com.cliffc.aa.HM.HM.Syntax.debug_find ( )
packageinherited

Definition at line 348 of file HM.java.

348 { return _hmt.debug_find(); } // Find, without the roll-up

References com.cliffc.aa.HM.HM.Syntax._hmt, and com.cliffc.aa.HM.HM.T2.debug_find().

Referenced by com.cliffc.aa.HM.HM.hm().

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

◆ find()

◆ flow_type()

Type com.cliffc.aa.HM.HM.Root.flow_type ( )
package

Definition at line 775 of file HM.java.

775 { return add_sig(_flow); }

References com.cliffc.aa.HM.HM.Syntax._flow, and com.cliffc.aa.HM.HM.Root.add_sig().

Referenced by com.cliffc.aa.HM.TestHM.run(), com.cliffc.aa.HM.TestHM9.run(), com.cliffc.aa.HM.TestHM.test05(), com.cliffc.aa.HM.TestHM9.test05(), com.cliffc.aa.HM.TestHM.test06(), com.cliffc.aa.HM.TestHM9.test06(), com.cliffc.aa.HM.TestHM.test14(), com.cliffc.aa.HM.TestHM9.test14(), com.cliffc.aa.HM.TestHM.test18(), com.cliffc.aa.HM.TestHM9.test18(), com.cliffc.aa.HM.TestHM.test20(), com.cliffc.aa.HM.TestHM9.test20(), com.cliffc.aa.HM.TestHM9.test32(), com.cliffc.aa.HM.TestHM.test32(), com.cliffc.aa.HM.TestHM9.test33(), com.cliffc.aa.HM.TestHM.test33(), com.cliffc.aa.HM.TestHM9.test34(), com.cliffc.aa.HM.TestHM.test34(), com.cliffc.aa.HM.TestHM9.test36(), com.cliffc.aa.HM.TestHM.test36(), com.cliffc.aa.HM.TestHM.test39(), com.cliffc.aa.HM.TestHM9.test39(), com.cliffc.aa.HM.TestHM.test40(), com.cliffc.aa.HM.TestHM9.test40(), com.cliffc.aa.HM.TestHM.test41(), com.cliffc.aa.HM.TestHM9.test41(), com.cliffc.aa.HM.TestHM.test42(), com.cliffc.aa.HM.TestHM9.test42(), com.cliffc.aa.HM.TestHM.test43(), com.cliffc.aa.HM.TestHM9.test43(), com.cliffc.aa.HM.TestHM.test44(), com.cliffc.aa.HM.TestHM9.test44(), com.cliffc.aa.HM.TestHM.test45(), com.cliffc.aa.HM.TestHM9.test45(), com.cliffc.aa.HM.TestHM.test49(), com.cliffc.aa.HM.TestHM.test50(), com.cliffc.aa.HM.TestHM.test51(), com.cliffc.aa.HM.TestHM.test52(), com.cliffc.aa.HM.TestHM.test55(), com.cliffc.aa.HM.TestHM.test56(), and com.cliffc.aa.HM.TestHM.test57().

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

◆ hm()

boolean com.cliffc.aa.HM.HM.Root.hm ( Worklist  work)
package

Reimplemented from com.cliffc.aa.HM.HM.Apply.

Definition at line 739 of file HM.java.

739 { return find().unify(_fun.find(),work); }

References com.cliffc.aa.HM.HM.Apply._fun, com.cliffc.aa.HM.HM.Syntax.find(), and com.cliffc.aa.HM.HM.T2.unify().

Here is the call graph for this function:

◆ more_work()

boolean com.cliffc.aa.HM.HM.Apply.more_work ( Worklist  work)
packageinherited

Reimplemented from com.cliffc.aa.HM.HM.Syntax.

Definition at line 726 of file HM.java.

726  {
727  if( !more_work_impl(work) ) return false;
728  if( !_fun.more_work(work) ) return false;
729  for( Syntax arg : _args ) if( !arg.more_work(work) ) return false;
730  return true;
731  }

References com.cliffc.aa.HM.HM.Apply._args, com.cliffc.aa.HM.HM.Apply._fun, com.cliffc.aa.HM.HM.Syntax.more_work(), and com.cliffc.aa.HM.HM.Syntax.more_work_impl().

Referenced by com.cliffc.aa.HM.HM.hm().

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

◆ more_work_impl()

final boolean com.cliffc.aa.HM.HM.Syntax.more_work_impl ( Worklist  work)
packageinherited

Definition at line 381 of file HM.java.

381  {
382  if( work.has(this) ) return true;
383  if( DO_HM && hm(null) ) // Any more HM work?
384  return false; // Found HM work not on worklist
385  if( DO_GCP && val(null)!=_flow )
386  return false; // Found GCP work not on worklist
387  return true;
388  }

References com.cliffc.aa.HM.HM.Syntax._flow, com.cliffc.aa.HM.HM.DO_GCP, com.cliffc.aa.HM.HM.DO_HM, com.cliffc.aa.HM.HM.Worklist.has(), com.cliffc.aa.HM.HM.Syntax.hm(), and com.cliffc.aa.HM.HM.Syntax.val().

Referenced by com.cliffc.aa.HM.HM.Con.more_work(), com.cliffc.aa.HM.HM.Ident.more_work(), com.cliffc.aa.HM.HM.Lambda.more_work(), com.cliffc.aa.HM.HM.Let.more_work(), com.cliffc.aa.HM.HM.Apply.more_work(), com.cliffc.aa.HM.HM.Struct.more_work(), com.cliffc.aa.HM.HM.Field.more_work(), and com.cliffc.aa.HM.HM.PrimSyn.more_work().

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

◆ p()

String com.cliffc.aa.HM.HM.Syntax.p ( )
inherited

Definition at line 393 of file HM.java.

393 { return p0(new SB(), new VBitSet()).toString(); }

References com.cliffc.aa.HM.HM.Syntax.p0(), and com.cliffc.aa.util.SB.toString().

Here is the call graph for this function:

◆ p0()

final SB com.cliffc.aa.HM.HM.Syntax.p0 ( SB  sb,
VBitSet  dups 
)
packageinherited

Definition at line 394 of file HM.java.

394  {
395  _hmt.get_dups(dups);
396  VBitSet visit = new VBitSet();
397  p1(sb.i());
398  if( DO_HM ) _hmt .str(sb.p(", HM="), visit,dups);
399  if( DO_GCP ) _flow.str(sb.p(", CCP="),visit.clr(),null,false);
400  sb.nl();
401  return p2(sb.ii(1),dups).di(1);
402  }

References com.cliffc.aa.HM.HM.Syntax._flow, com.cliffc.aa.HM.HM.Syntax._hmt, com.cliffc.aa.util.VBitSet.clr(), com.cliffc.aa.util.SB.di(), com.cliffc.aa.HM.HM.DO_GCP, com.cliffc.aa.HM.HM.DO_HM, com.cliffc.aa.HM.HM.T2.get_dups(), com.cliffc.aa.util.SB.i(), com.cliffc.aa.util.SB.ii(), com.cliffc.aa.util.SB.nl(), com.cliffc.aa.util.SB.p(), com.cliffc.aa.HM.HM.Syntax.p1(), com.cliffc.aa.HM.HM.Syntax.p2(), com.cliffc.aa.type.Type< T extends Type< T >.str(), and com.cliffc.aa.HM.HM.T2.str().

Referenced by com.cliffc.aa.HM.HM.Syntax.p(), com.cliffc.aa.HM.HM.Lambda.p2(), com.cliffc.aa.HM.HM.Let.p2(), com.cliffc.aa.HM.HM.Apply.p2(), com.cliffc.aa.HM.HM.Struct.p2(), and com.cliffc.aa.HM.HM.Field.p2().

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

◆ p1()

SB com.cliffc.aa.HM.HM.Apply.p1 ( SB  sb)
packageinherited

Reimplemented from com.cliffc.aa.HM.HM.Syntax.

Definition at line 612 of file HM.java.

612 { return sb.p("(...)"); }

References com.cliffc.aa.util.SB.p().

Here is the call graph for this function:

◆ p2()

SB com.cliffc.aa.HM.HM.Apply.p2 ( SB  sb,
VBitSet  dups 
)
packageinherited

Reimplemented from com.cliffc.aa.HM.HM.Syntax.

Definition at line 613 of file HM.java.

613  {
614  _fun.p0(sb,dups);
615  for( Syntax arg : _args ) arg.p0(sb,dups);
616  return sb;
617  }

References com.cliffc.aa.HM.HM.Apply._args, com.cliffc.aa.HM.HM.Apply._fun, and com.cliffc.aa.HM.HM.Syntax.p0().

Here is the call graph for this function:

◆ prep_lookup_deps()

void com.cliffc.aa.HM.HM.Syntax.prep_lookup_deps ( Ident  id)
packageinherited

Reimplemented in com.cliffc.aa.HM.HM.Let, and com.cliffc.aa.HM.HM.Lambda.

Definition at line 377 of file HM.java.

377 {}

◆ prep_tree()

int com.cliffc.aa.HM.HM.Apply.prep_tree ( Syntax  par,
VStack  nongen,
Worklist  work 
)
packageinherited

Reimplemented from com.cliffc.aa.HM.HM.Syntax.

Definition at line 720 of file HM.java.

720  {
721  prep_tree_impl(par,nongen,work,T2.make_leaf());
722  int cnt = 1+_fun.prep_tree(this,nongen,work);
723  for( Syntax arg : _args ) cnt += arg.prep_tree(this,nongen,work);
724  return cnt;
725  }

References com.cliffc.aa.HM.HM.Apply._args, com.cliffc.aa.HM.HM.Apply._fun, com.cliffc.aa.HM.HM.T2.make_leaf(), com.cliffc.aa.HM.HM.Syntax.prep_tree(), and com.cliffc.aa.HM.HM.Syntax.prep_tree_impl().

Referenced by com.cliffc.aa.HM.HM.hm().

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

◆ prep_tree_impl()

final void com.cliffc.aa.HM.HM.Syntax.prep_tree_impl ( Syntax  par,
VStack  nongen,
Worklist  work,
T2  t 
)
packageinherited

Definition at line 370 of file HM.java.

370  {
371  _par = par;
372  _hmt = t;
373  _flow= Type.XSCALAR;
374  _nongen = nongen;
375  work.push(this);
376  }

References com.cliffc.aa.HM.HM.Syntax._flow, com.cliffc.aa.HM.HM.Syntax._hmt, com.cliffc.aa.HM.HM.Syntax._nongen, com.cliffc.aa.HM.HM.Syntax._par, com.cliffc.aa.HM.HM.Worklist.push(), and com.cliffc.aa.type.Type< T extends Type< T >.XSCALAR.

Referenced by com.cliffc.aa.HM.HM.Con.prep_tree(), com.cliffc.aa.HM.HM.Ident.prep_tree(), com.cliffc.aa.HM.HM.Lambda.prep_tree(), com.cliffc.aa.HM.HM.Let.prep_tree(), com.cliffc.aa.HM.HM.Apply.prep_tree(), com.cliffc.aa.HM.HM.Struct.prep_tree(), com.cliffc.aa.HM.HM.Field.prep_tree(), and com.cliffc.aa.HM.HM.PrimSyn.prep_tree().

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

◆ str()

SB com.cliffc.aa.HM.HM.Root.str ( SB  sb)
package

Reimplemented from com.cliffc.aa.HM.HM.Apply.

Definition at line 738 of file HM.java.

738 { return _fun.str(sb); }

References com.cliffc.aa.HM.HM.Apply._fun, and com.cliffc.aa.HM.HM.Syntax.str().

Here is the call graph for this function:

◆ toString()

final String com.cliffc.aa.HM.HM.Syntax.toString ( )
inherited

Definition at line 390 of file HM.java.

390 { return str(new SB()).toString(); }

References com.cliffc.aa.HM.HM.Syntax.str(), and com.cliffc.aa.util.SB.toString().

Referenced by com.cliffc.aa.HM.HM.Lambda.p1().

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

◆ val()

Type com.cliffc.aa.HM.HM.Root.val ( Worklist  work)
package

Reimplemented from com.cliffc.aa.HM.HM.Apply.

Definition at line 744 of file HM.java.

744  {
745  if( _fun._flow.above_center() || work==null )
746  return _fun._flow;
747  // Root-widening needs to call all functions which can be returned from
748  // the Root or from any function reachable from the Root via struct &
749  // fields, or by being returned from another function.
750  BitsFun fidxs = find().find_fidxs();
751  if( fidxs != BitsFun.EMPTY )
752  for( int fidx : fidxs ) {
753  Lambda fun = Lambda.FUNS.get(fidx);
754  if( fun!=null ) {
755  fun.find().push_update(this); // Discovered as call-site; if the Lambda changes the Apply needs to be revisited.
756  // For each returned function, assume Root calls all arguments with
757  // worse-case values.
758  for( int i=0; i<fun._types.length; i++ ) {
759  Type formal = fun._types[i];
760  Type actual = Root.widen(fun.targ(i));
761  Type rez = formal.meet(actual);
762  if( formal != rez ) {
763  fun._types[i] = rez;
764  work.addAll(fun.targ(i)._deps);
765  work.push(fun._body);
766  }
767  }
768  }
769  }
770 
771  return _fun._flow;
772  }

References com.cliffc.aa.HM.HM.Lambda._body, com.cliffc.aa.HM.HM.T2._deps, com.cliffc.aa.HM.HM.Syntax._flow, com.cliffc.aa.HM.HM.Apply._fun, com.cliffc.aa.HM.HM.Lambda._types, com.cliffc.aa.type.Type< T extends Type< T >.above_center(), com.cliffc.aa.HM.HM.Worklist.addAll(), com.cliffc.aa.type.BitsFun.EMPTY, com.cliffc.aa.HM.HM.Syntax.find(), com.cliffc.aa.HM.HM.T2.find_fidxs(), com.cliffc.aa.HM.HM.Lambda.FUNS, com.cliffc.aa.type.Type< T extends Type< T >.meet(), com.cliffc.aa.HM.HM.Worklist.push(), com.cliffc.aa.HM.HM.T2.push_update(), com.cliffc.aa.HM.HM.Lambda.targ(), and com.cliffc.aa.HM.HM.Root.widen().

Here is the call graph for this function:

◆ widen()

static Type com.cliffc.aa.HM.HM.Root.widen ( T2  t2)
staticpackage

Definition at line 743 of file HM.java.

743 { return t2.as_flow(); }

References com.cliffc.aa.HM.HM.T2.as_flow().

Referenced by com.cliffc.aa.HM.HM.Apply.add_val_work(), com.cliffc.aa.HM.HM.Pair1.Pair1X.apply(), and com.cliffc.aa.HM.HM.Root.val().

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

Member Data Documentation

◆ _args

◆ _flow

◆ _fun

◆ _hmt

T2 com.cliffc.aa.HM.HM.Syntax._hmt
packageinherited

Definition at line 343 of file HM.java.

Referenced by com.cliffc.aa.HM.HM.Syntax.debug_find(), com.cliffc.aa.HM.HM.Syntax.find(), com.cliffc.aa.HM.HM.hm(), com.cliffc.aa.HM.HM.Syntax.p0(), com.cliffc.aa.HM.HM.Let.prep_tree(), com.cliffc.aa.HM.HM.PrimSyn.prep_tree(), com.cliffc.aa.HM.HM.Syntax.prep_tree_impl(), com.cliffc.aa.HM.HM.PrimSyn.PrimSyn(), com.cliffc.aa.HM.TestHM.run(), com.cliffc.aa.HM.TestHM9.run(), com.cliffc.aa.HM.TestHM.test05(), com.cliffc.aa.HM.TestHM9.test05(), com.cliffc.aa.HM.TestHM.test06(), com.cliffc.aa.HM.TestHM9.test06(), com.cliffc.aa.HM.TestHM.test14(), com.cliffc.aa.HM.TestHM9.test14(), com.cliffc.aa.HM.TestHM.test18(), com.cliffc.aa.HM.TestHM9.test18(), com.cliffc.aa.HM.TestHM.test20(), com.cliffc.aa.HM.TestHM9.test20(), com.cliffc.aa.HM.TestHM9.test32(), com.cliffc.aa.HM.TestHM.test32(), com.cliffc.aa.HM.TestHM9.test33(), com.cliffc.aa.HM.TestHM.test33(), com.cliffc.aa.HM.TestHM9.test34(), com.cliffc.aa.HM.TestHM.test34(), com.cliffc.aa.HM.TestHM9.test36(), com.cliffc.aa.HM.TestHM.test36(), com.cliffc.aa.HM.TestHM.test39(), com.cliffc.aa.HM.TestHM9.test39(), com.cliffc.aa.HM.TestHM.test40(), com.cliffc.aa.HM.TestHM9.test40(), com.cliffc.aa.HM.TestHM.test41(), com.cliffc.aa.HM.TestHM9.test41(), com.cliffc.aa.HM.TestHM.test42(), com.cliffc.aa.HM.TestHM9.test42(), com.cliffc.aa.HM.TestHM.test43(), com.cliffc.aa.HM.TestHM9.test43(), com.cliffc.aa.HM.TestHM.test44(), com.cliffc.aa.HM.TestHM9.test44(), com.cliffc.aa.HM.TestHM.test45(), com.cliffc.aa.HM.TestHM9.test45(), com.cliffc.aa.HM.TestHM.test49(), com.cliffc.aa.HM.TestHM9.test49(), com.cliffc.aa.HM.TestHM.test50(), com.cliffc.aa.HM.TestHM9.test50(), com.cliffc.aa.HM.TestHM.test51(), com.cliffc.aa.HM.TestHM.test52(), com.cliffc.aa.HM.TestHM.test55(), com.cliffc.aa.HM.TestHM.test56(), and com.cliffc.aa.HM.TestHM.test57().

◆ _nongen

VStack com.cliffc.aa.HM.HM.Syntax._nongen
packageinherited

◆ _par

◆ NARGS

final Syntax [] com.cliffc.aa.HM.HM.Root.NARGS = new Syntax[0]
staticpackage

Definition at line 736 of file HM.java.

Referenced by com.cliffc.aa.HM.HM.Root.add_sig().

◆ T2MAP

final HashMap<T2,Type> com.cliffc.aa.HM.HM.Apply.T2MAP = new HashMap<>()
staticprivateinherited

◆ WDUPS

final NonBlockingHashMapLong<String> com.cliffc.aa.HM.HM.Apply.WDUPS = new NonBlockingHashMapLong<>()
staticprivateinherited

Definition at line 660 of file HM.java.

Referenced by com.cliffc.aa.HM.HM.Apply.val(), and com.cliffc.aa.HM.HM.T2.walk_types_in().


The documentation for this class was generated from the following file:
com.cliffc.aa.type.BitsFun.EMPTY
static final BitsFun EMPTY
Definition: BitsFun.java:37
com.cliffc.aa.HM.HM.Syntax.find
T2 find()
Definition: HM.java:344
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.TypeTuple.make_ret
static TypeTuple make_ret(Type trez)
Definition: TypeTuple.java:120
com.cliffc.aa.util.SB.ii
SB ii(int i)
Definition: SB.java:44
com.cliffc.aa.util.SB.di
SB di(int i)
Definition: SB.java:46
com.cliffc.aa.type.Type.widen
Type widen()
Definition: Type.java:828
com.cliffc.aa.HM.HM.Syntax.hm
abstract boolean hm(Worklist work)
com.cliffc.aa.type.Type.XSCALAR
static final Type XSCALAR
Definition: Type.java:329
com.cliffc.aa.HM.HM.Syntax.val
abstract Type val(Worklist work)
com.cliffc.aa.type.Type
an implementation of language AA
Definition: Type.java:94
com.cliffc.aa.type.TypeFunSig.make
static TypeFunSig make(String[] args, TypeTuple formals, TypeTuple ret)
Definition: TypeFunSig.java:71
com.cliffc.aa.HM.HM.Apply._args
final Syntax[] _args
Definition: HM.java:604
com.cliffc.aa.type.TypeTuple
Definition: TypeTuple.java:11
com.cliffc.aa.HM.HM.Syntax.p2
abstract SB p2(SB sb, VBitSet dups)
com.cliffc.aa.type.TypeFunPtr._fidxs
BitsFun _fidxs
Definition: TypeFunPtr.java:26
com.cliffc.aa.HM.HM.Root.NARGS
static final Syntax[] NARGS
Definition: HM.java:736
com.cliffc.aa.util.VBitSet.clr
VBitSet clr()
Definition: VBitSet.java:9
com.cliffc.aa.HM.HM.Syntax._flow
Type _flow
Definition: HM.java:351
com.cliffc.aa.type.Type.meet
final Type meet(Type t)
Definition: Type.java:412
com.cliffc.aa.type.Type.str
SB str(SB sb, VBitSet dups, TypeMem mem, boolean debug)
Definition: Type.java:131
com.cliffc.aa.HM.HM.DO_HM
static final boolean DO_HM
Definition: HM.java:91
com.cliffc.aa.HM.HM.Apply._fun
final Syntax _fun
Definition: HM.java:603
com.cliffc.aa.HM.HM.Syntax._par
Syntax _par
Definition: HM.java:341
com.cliffc.aa.HM.HM.Syntax.p1
abstract SB p1(SB sb)
com.cliffc.aa.HM.HM.Syntax.p0
final SB p0(SB sb, VBitSet dups)
Definition: HM.java:394
com.cliffc.aa.type.Type.above_center
boolean above_center()
Definition: Type.java:741
com.cliffc.aa.HM.HM.Syntax._nongen
VStack _nongen
Definition: HM.java:342
com.cliffc.aa.HM.HM.Syntax._hmt
T2 _hmt
Definition: HM.java:343
com.cliffc.aa.HM.HM.Syntax.more_work
abstract boolean more_work(Worklist work)
com.cliffc.aa.HM.HM.Syntax.more_work_impl
final boolean more_work_impl(Worklist work)
Definition: HM.java:381
com.cliffc.aa.HM.HM.Syntax.prep_tree_impl
final void prep_tree_impl(Syntax par, VStack nongen, Worklist work, T2 t)
Definition: HM.java:370
com.cliffc.aa.HM.HM.T2.unify
boolean unify(T2 that, Worklist work)
Definition: HM.java:1604
com.cliffc.aa.util.VBitSet
Definition: VBitSet.java:5
com.cliffc.aa.HM.HM.Syntax.str
abstract SB str(SB sb)
com.cliffc.aa.type.BitsFun
Definition: BitsFun.java:7
com.cliffc.aa.util.SB
Tight/tiny StringBuilder wrapper.
Definition: SB.java:8
com.cliffc.aa.HM.HM.Root.add_sig
static Type add_sig(Type t)
Definition: HM.java:776
com.cliffc.aa.util.SB.nl
SB nl()
Definition: SB.java:48
com.cliffc.aa.util.SB.p
SB p(String s)
Definition: SB.java:13
com.cliffc.aa.HM.HM.Syntax.prep_tree
abstract int prep_tree(Syntax par, VStack nongen, Worklist work)
com.cliffc.aa.type.TypeFunSig
Definition: TypeFunSig.java:10
com.cliffc.aa.HM.HM.DO_GCP
static final boolean DO_GCP
Definition: HM.java:92
com.cliffc.aa.HM.HM.T2.find
T2 find()
Definition: HM.java:1374
com.cliffc.aa.HM.HM.T2.find_fidxs
BitsFun find_fidxs()
Definition: HM.java:2100
com.cliffc.aa.util.SB.i
SB i(int d)
Definition: SB.java:38
com.cliffc.aa.HM.HM.T2.get_dups
VBitSet get_dups(VBitSet dups)
Definition: HM.java:2148
com.cliffc.aa.HM.HM.T2.str
SB str(SB sb, VBitSet visit, VBitSet dups)
Definition: HM.java:2163
com.cliffc.aa.HM.HM.Root.Root
Root(Syntax body)
Definition: HM.java:737
com.cliffc.aa.util.SB.toString
String toString()
Definition: SB.java:62
com.cliffc.aa.HM.HM.T2.debug_find
T2 debug_find()
Definition: HM.java:1364