Go to the documentation of this file. 1 package com.cliffc.aa.type;
6 import java.util.HashMap;
8 import static org.junit.Assert.*;
47 assertSame(mt,pmt.
_obj);
62 HashMap<Type,Integer> ds = p0.
depth();
63 assertEquals(0,(
int)ds.get(t0));
68 assertEquals(1,(
int)ds.get(t0));
69 assertEquals(0,(
int)ds.get(t1));
70 assertEquals(0,(
int)ds.get(p0));
75 assertEquals(2,(
int)ds.get(t0));
80 assertEquals(CUTOFF ,(
int)ds.get(t0));
81 assertEquals(CUTOFF-1,(
int)ds.get(t1));
82 assertEquals(1,(
int)ds.get(t2));
83 assertEquals(0,(
int)ds.get(t3));
102 HashMap<Type,Integer> ds2 = pax.
depth();
105 assertEquals(0,(
int)ds2.get(txp1));
107 assertEquals(1,(
int)ds2.get(txs1));
109 assertEquals(1,(
int)ds2.get(txp2));
111 assertEquals(2,(
int)ds2.get(txs2));
114 assertEquals(2,(
int)ds2.get(txp3));
116 assertEquals(txs2,txp3.
_obj);
119 assertTrue(t3.isa(tax));
125 final int CUTOFF = 3;
151 HashMap<Type,Integer> ds = p1.
depth();
152 assertEquals(1,(
int)ds.get(t0));
153 assertEquals(0,(
int)ds.get(t1));
159 assertEquals(2,(
int)ds.get(t0));
164 assertEquals(CUTOFF ,(
int)ds.get(t0));
165 assertEquals(CUTOFF-1,(
int)ds.get(t1));
166 assertEquals(1,(
int)ds.get(t2));
167 assertEquals(0,(
int)ds.get(t3));
187 HashMap<Type,Integer> ds2 = pax.
depth();
190 assertEquals(0,(
int)ds2.get(txp1));
192 assertEquals(1,(
int)ds2.get(txs1));
194 assertEquals(1,(
int)ds2.get(txp2));
196 assertEquals(CUTOFF-1,(
int)ds2.get(txs2));
200 assertSame(txp2, txp3);
201 assertSame(txs2, txp3.
_obj);
202 assertTrue(t3.isa(tax));
208 assertEquals(CUTOFF,(
int)ds.get(txs2));
215 assertEquals(0,(
int)ds2.get(t4p1));
217 assertEquals(1,(
int)ds2.get(t4s1));
219 assertEquals(1,(
int)ds2.get(t4p2));
221 assertEquals(CUTOFF-1,(
int)ds2.get(t4s2));
224 assertEquals(1,(
int)ds2.get(t4p3));
225 assertEquals(t4s2,t4p3.
_obj);
226 assertTrue(t4.isa(tax4));
279 HashMap<Type,Integer> depths = pa2.
depth();
281 assertEquals(1,maxd);
282 assertEquals(1,(
int)depths.get(a3));
323 depths = pa0.
depth();
324 assertEquals(0,(
int)depths.get(a0));
325 assertEquals(1,(
int)depths.get(a1));
326 assertEquals(2,(
int)depths.get(a2));
327 assertEquals(3,(
int)depths.get(a3));
341 assertSame (i10 , zsx0.
at(0));
346 assertSame (i11 , zsx1.
at(0));
347 assertSame (zpx0, zsx1.
at(1));
348 assertSame (zpa1, zsx1.
at(2));
360 assertSame(str_a2.meet(str_a3), zsa23.
at(0));
364 assertSame(str_x5.
meet(i13), zsx35.
at(0));
368 assertSame(zsa23, zpa23q.
_obj);
371 assertSame(i14, zsx4.
at(0));
372 assertSame(zpx35, zsx4.
at(1));
373 assertSame(zpa23, zsx4.
at(2));
375 depths = pzsa0.
depth();
376 assertEquals(0,(
int)depths.get(zsa0));
377 assertEquals(1,(
int)depths.get(zsa1));
378 assertEquals(2,(
int)depths.get(zsa23));
380 assertTrue(a0.isa(zsa0));
402 final int CUTOFF = 3;
441 HashMap<Type,Integer> depths = px1.
depth();
442 assertEquals(0,(
int)depths.get(x1));
443 assertEquals(1,(
int)depths.get(x2));
444 assertEquals(1,(
int)depths.get(x3));
445 assertEquals(2,(
int)depths.get(x4));
446 assertEquals(2,(
int)depths.get(x5));
447 assertEquals(2,(
int)depths.get(x6));
448 assertEquals(2,(
int)depths.get(x7));
449 assertEquals(3,(
int)depths.get(x8));
450 assertEquals(3,(
int)depths.get(x9));
451 assertEquals(3,(
int)depths.get(x10));
452 assertEquals(3,(
int)depths.get(x12));
477 depths = pz1.
depth();
485 assertSame( vt, z.
at(0));
506 final int CUTOFF = 2;
542 final int CUTOFF = 2;
555 assertSame(px1,x1.
at(1));
595 while( tmp0 != tmp1 && cnt < 100 ) {
605 assertEquals(CUTOFF+1,cnt);
623 assertEquals(ts6,ts6x);
628 assertEquals(ts7,ts7x);
633 assertEquals(ts8,ts8x);
653 assertEquals(tsB1,tsB1.
approx(CUTOFF,alias6));
657 assertEquals(tsC1,tsC1.
approx(CUTOFF,alias7));
666 cnt = 0; tmp1 =
null;
667 while( tmpC1 != tmp1 && cnt < 100 ) {
681 assertEquals(CUTOFF,cnt);
735 Type mt0 = dsp0.meet(dsp3);
738 Type mt1 = dsp1.meet(dsp3);
741 Type mt = dsp2.meet(dsp3);
742 assertEquals(dsp3,mt);
746 assertEquals(dsp3,rez);
static final Type[] TYPES
static BitsAlias RECORD_BITS0
TypeStruct repeats_in_cycles()
static final TypeMemPtr DISPLAY_PTR
static BitsFun make0(int bit)
static final TypeFld DISP_FLD
an implementation of language AA
static final TypeFld NO_DISP
static TypeInt con(long con)
TypeStruct install_cyclic(Ary< Type > reachs)
static int new_alias(int par)
static final TypeFunPtr[] TYPES
A memory-based collection of optionally named fields.
static TypeFld make(String fld, Type t, int order)
static boolean test(long[] bits, int i)
static BitsAlias ALL_DISPLAYS
static final TypeInt INT64
static final String fldBot
static int RECURSIVE_MEET
void check_leaf(TypeMemPtr p, int alias, TypeInt vt)
static final TypeInt NINT8
static TypeStr con(String con)
static TypeFunPtr make(BitsFun fidxs, int nargs, Type disp)
static TypeFld malloc(String fld, Type t, Access access, int order)
TypeStruct approx(int cutoff, int alias)
static BitsAlias make0(int bit)
static final TypeStruct[] TYPES
static TypeStruct make(String fld_name, Type t)
HashMap< Type, Integer > depth()
static TypeStruct malloc(String name, boolean any, TypeFld[] flds, boolean open)
static int max(int alias, HashMap< Type, Integer > ds)
static TypeMemPtr make_nil(int alias, TypeObj obj)
static TypeFld[] ts(TypeFld t0)
static int new_fidx(int par)
static final TypeFlt FLT64
static TypeMemPtr make(BitsAlias aliases, TypeObj obj)