aa
NewAryNode.java
Go to the documentation of this file.
1 package com.cliffc.aa.node;
2 
3 import com.cliffc.aa.type.*;
4 import com.cliffc.aa.util.Ary;
6 
7 // Allocates a TypeAry in memory. Takes in the size and initial element value
8 // produces the pointer. Hence liveness is odd.
9 abstract class NewAryNode extends NewNode.NewPrimNode<TypeAry> {
10  public NewAryNode( TypeAry tary, String name, int op_prec,TypeInt sz ) {
11  super(OP_NEWARY,BitsAlias.AARY,tary,name,false,op_prec,Type.CTRL,TypeMem.ALLMEM,null,sz);
12  }
13  @Override TypeAry dead_type() { return TypeAry.ARY.dual(); }
14 
15  protected static void add_libs( Ary<NewPrimNode> INTRINSICS ) {
17  }
18 
19  // --------------------------------------------------------------------------
20  // "[" defines a new array, and expects an integer size. Produces
21  // partial-alloc type which is consumed by "]" to produce the array.
22  public static class NewAry extends NewAryNode {
23  public NewAry( TypeAry tary, TypeInt sz ) { super(tary,"[",0,sz); }
24  @Override public String bal_close() { return "]"; } // Balanced op
25  @Override public byte op_prec() { return 0; } // Balanced op
26  @Override TypeObj valueobj() {
27  Type sz = val(3);
28  if( !(sz instanceof TypeInt) ) return sz.oob(TypeObj.ISUSED);
29  // Storage class can be found by looking at _live, needs the reverse-flow of use sizes.
30  return TypeAry.make((TypeInt)sz,Type.XNIL,TypeObj.OBJ);
31  }
32  }
33 
34  //@Override public TV2 new_tvar(String alloc_site) {
35  // final Node n = this;
36  // NonBlockingHashMap<Comparable,TV2> args = new NonBlockingHashMap<Comparable,TV2>(){{
37  // put(" len" ,TV2.make_base(null,TypeInt.INT64,alloc_site));
38  // put(" elem",TV2.make_leaf(null,alloc_site));
39  // }};
40  // return TV2.make("Obj",this,alloc_site,args);
41  //}
42 
43  //@Override public boolean unify( boolean test ) {
44  // // Self should always should be a TObj
45  // TV2 tvar = tvar();
46  // if( tvar.is_dead() ) return false;
47  // if( _defs._len <=3 ) return false; // Mid-kill
48  // if( tvar.isa("Obj") &&
49  // tvar.get(" len") == tvar(3) && // Size equals
50  // tvar.get(" elem") != null ) // Has an element type
51  // return false;
52  // // Structural unification on all fields
53  // return tvar.unify_at(" len",tvar(3),test);
54  //}
55 
56 }
57 
com.cliffc.aa.node.NewAryNode.NewAry.bal_close
String bal_close()
Definition: NewAryNode.java:24
com.cliffc.aa.util.NonBlockingHashMap
A lock-free alternate implementation of java.util.concurrent.ConcurrentHashMap with better scaling pr...
Definition: NonBlockingHashMap.java:75
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.node.NewAryNode.NewAry.op_prec
byte op_prec()
Definition: NewAryNode.java:25
com.cliffc
com.cliffc.aa.type.BitsAlias.AARY
static final int AARY
Definition: BitsAlias.java:25
com.cliffc.aa.util
Definition: AbstractEntry.java:1
com.cliffc.aa.type.TypeInt
Definition: TypeInt.java:9
com.cliffc.aa.type.Type
an implementation of language AA
Definition: Type.java:94
com.cliffc.aa.util.Ary
Definition: Ary.java:11
com.cliffc.aa.type.BitsAlias
Definition: BitsAlias.java:8
com.cliffc.aa.node.NewAryNode.NewAry.NewAry
NewAry(TypeAry tary, TypeInt sz)
Definition: NewAryNode.java:23
com.cliffc.aa.node.NewAryNode.add_libs
static void add_libs(Ary< NewPrimNode > INTRINSICS)
Definition: NewAryNode.java:15
com.cliffc.aa.type.TypeMem.ALLMEM
static final TypeMem ALLMEM
Definition: TypeMem.java:228
com.cliffc.aa.node.NewAryNode.NewAry
Definition: NewAryNode.java:22
com.cliffc.aa.type.TypeAry
Definition: TypeAry.java:7
com.cliffc.aa.node.NewAryNode.dead_type
TypeAry dead_type()
Definition: NewAryNode.java:13
com.cliffc.aa.type.TypeInt.INT64
static final TypeInt INT64
Definition: TypeInt.java:39
com.cliffc.aa.type.TypeObj.OBJ
static final TypeObj OBJ
Definition: TypeObj.java:44
com.cliffc.aa.type.TypeObj
Definition: TypeObj.java:15
com.cliffc.aa.type.TypeAry.ARY
static final TypeAry ARY
Definition: TypeAry.java:44
com.cliffc.aa.node.NewNode.NewPrimNode< TypeAry >::INTRINSICS
static final Ary< NewPrimNode > INTRINSICS
Definition: NewNode.java:186
com.cliffc.aa.type.TypeAry.make
static TypeAry make(String name, boolean any, TypeInt sz, Type elem, TypeObj stor)
Definition: TypeAry.java:38
com.cliffc.aa.type.Type.CTRL
static final Type CTRL
Definition: Type.java:326
com.cliffc.aa.type.TypeObj.ISUSED
static final TypeObj ISUSED
Definition: TypeObj.java:45
com.cliffc.aa.type.TypeAry.ARY0
static final TypeAry ARY0
Definition: TypeAry.java:45
com.cliffc.aa.node.NewAryNode
Definition: NewAryNode.java:9
com.cliffc.aa.node.NewAryNode.NewAry.valueobj
TypeObj valueobj()
Definition: NewAryNode.java:26
com.cliffc.aa
Definition: AA.java:1
com.cliffc.aa.node.NewNode
Definition: NewNode.java:17
com.cliffc.aa.node.NewAryNode.NewAryNode
NewAryNode(TypeAry tary, String name, int op_prec, TypeInt sz)
Definition: NewAryNode.java:10
com.cliffc.aa.type.Type.oob
Type oob()
Definition: Type.java:635
com.cliffc.aa.type.Type.XNIL
static final Type XNIL
Definition: Type.java:333
com
com.cliffc.aa.type
Definition: Bits.java:1