aa
ThretNode.java
Go to the documentation of this file.
1 package com.cliffc.aa.node;
2 
3 import com.cliffc.aa.GVNGCM;
4 import com.cliffc.aa.type.Type;
5 import com.cliffc.aa.type.TypeMem;
6 import com.cliffc.aa.type.TypeTuple;
7 
8 // Thret: a limited function return
9 // See Thunk (Fun)
10 
11 // Expected 1 callepi only, determined after Parse.expr().
12 // Takes in Control & Memory & Value.
13 // Produces Control & Memory & Value.
14 public class ThretNode extends Node {
16  public Node ctrl() { return in(0); }
17  public Node mem () { return in(1); }
18  public Node rez () { return in(2); }
19  public ThunkNode thunk() { return (ThunkNode)in(3); }
20  @Override public Type value(GVNGCM.Mode opt_mode) {
21  return TypeTuple.RET;
22  }
23  @Override public TypeMem live(GVNGCM.Mode opt_mode ) { return TypeMem.ALLMEM; }
24  @Override public TypeMem all_live() { return TypeMem.ALLMEM; }
25  @Override public TypeMem live_use(GVNGCM.Mode opt_mode, Node def ) {
26  if( def==ctrl() ) return TypeMem.ALIVE;
27  if( def==mem () ) return _live;
28  if( def==rez () ) return TypeMem.ESCAPE;
29  if( def==thunk()) return TypeMem.ALIVE;
30  throw com.cliffc.aa.AA.unimpl();
31  }
32  //@Override public TV2 new_tvar(String alloc_site) {
33  // return TV2.make("Ret",this,alloc_site,in(0),in(1),in(2));
34  //}
35 }
com.cliffc.aa.node.ThretNode.ThretNode
ThretNode(Node ctrl, Node mem, Node val, ThunkNode thunk)
Definition: ThretNode.java:15
com.cliffc.aa.node.ThretNode
Definition: ThretNode.java:14
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.Node._live
TypeMem _live
Definition: Node.java:89
com.cliffc
com.cliffc.aa.node.Node
Definition: Node.java:16
com.cliffc.aa.type.TypeMem.ESCAPE
static final TypeMem ESCAPE
Definition: TypeMem.java:227
com.cliffc.aa.type.Type
an implementation of language AA
Definition: Type.java:94
com.cliffc.aa.type.TypeTuple
Definition: TypeTuple.java:11
com.cliffc.aa.type.TypeMem.ALLMEM
static final TypeMem ALLMEM
Definition: TypeMem.java:228
com.cliffc.aa.node.ThretNode.live_use
TypeMem live_use(GVNGCM.Mode opt_mode, Node def)
Definition: ThretNode.java:25
com.cliffc.aa.AA.unimpl
static RuntimeException unimpl()
Definition: AA.java:10
com.cliffc.aa.node.Node.OP_THRET
static final byte OP_THRET
Definition: Node.java:48
com.cliffc.aa.node.ThretNode.all_live
TypeMem all_live()
Definition: ThretNode.java:24
com.cliffc.aa.node.ThretNode.rez
Node rez()
Definition: ThretNode.java:18
com.cliffc.aa.node.ThretNode.value
Type value(GVNGCM.Mode opt_mode)
Definition: ThretNode.java:20
com.cliffc.aa.type.TypeTuple.RET
static final TypeTuple RET
Definition: TypeTuple.java:130
com.cliffc.aa.node.Node.in
Node in(int i)
Definition: Node.java:126
com.cliffc.aa.type.TypeMem.ALIVE
static final TypeMem ALIVE
Definition: TypeMem.java:226
com.cliffc.aa.GVNGCM
Definition: GVNGCM.java:12
com.cliffc.aa.AA
an implementation of language AA
Definition: AA.java:9
com.cliffc.aa.node.Node.val
Type val(int idx)
Definition: Node.java:470
com.cliffc.aa
Definition: AA.java:1
com.cliffc.aa.node.ThretNode.ctrl
Node ctrl()
Definition: ThretNode.java:16
com.cliffc.aa.node.ThunkNode
Definition: ThunkNode.java:16
com.cliffc.aa.node.ThretNode.mem
Node mem()
Definition: ThretNode.java:17
com
com.cliffc.aa.node.ThretNode.thunk
ThunkNode thunk()
Definition: ThretNode.java:19
com.cliffc.aa.type
Definition: Bits.java:1
com.cliffc.aa.GVNGCM.Mode
Definition: GVNGCM.java:14
com.cliffc.aa.node.ThretNode.live
TypeMem live(GVNGCM.Mode opt_mode)
Definition: ThretNode.java:23