1 package com.cliffc.aa.node;
10 import java.util.Arrays;
11 import java.util.HashMap;
14 import static org.junit.Assert.assertEquals;
39 private static long hash(
long h ) {
40 h ^= (h>>>20) ^ (h>>>12);
41 h ^= (h>>> 7) ^ (h>>> 4);
49 private long[]
_work =
new long[1];
70 int[][] subs =
new int[
_alltypes.length][];
72 for(
int i=0; i<subs.length; i++ ) {
74 for(
int j=0; j<subs.length; j++ )
77 subs[i] = Arrays.copyOfRange(tmp,0,len);
89 int[][] subs =
new int[
_subtypes.length][];
90 for(
int i=0; i<subs.length; i++ )
94 for(
int i=0; i<subs.length; i++ ) {
95 int[] subis = subs[i];
97 for(
int j=0; j<subis.length && subis[j] != -1; j++ ) {
98 int[] subjs = subs[subis[j]];
102 int ix = j+1, ixx = j+1;
104 while( ix<subis.length && jx<subjs.length ) {
109 if( six==sjx ) { ix++; jx++; }
110 else if( six < sjx ) subis[ixx++] = subis[ix++];
113 while( ixx < ix ) subis[ixx++] = -1;
116 if( ix != -1 ) subs[i] = Arrays.copyOfRange(subs[i],0,ix);
131 private void print(
int x,
int d ) {
136 for(
int sub : subs )
138 System.out.println(
"#"+x+
" = "+
_alltypes[x]+
" "+d+
" "+dt.
getl());
139 }
else if( d < dt.
getl() ) {
141 System.out.println(
"Shrink #"+x+
" = "+
_alltypes[x]+
" "+d+
" "+dt.
getl());
158 @SuppressWarnings(
"unchecked")
199 for(
int i=1; i<
_ins.length; i++ )
267 assertEquals(0,
_errs);
270 @SuppressWarnings(
"unchecked")
281 assert n.
_defs._len>0;
288 assert n.
_defs._len==0;
299 assert n.
_defs._len==0;
304 if( n._sig.nargs() >= 2 ) n.add_def(
_ins[3]);
308 @SuppressWarnings(
"unchecked")
310 System.out.println(n.xstr());
317 long t0 = System.currentTimeMillis(), t2=t0;
318 long nprobes = 0, nprobes1=0;
330 int[] stx0 =
stx(n,
xx,0);
335 int[] stx1 =
stx(n,
xx,1);
340 int[] stx2 =
stx(n,
xx,2);
345 int[] stx3 =
stx(n,
xx,3);
350 nprobes1 += stx0.length+stx1.length+stx2.length+stx3.length;
351 long t1 = System.currentTimeMillis();
352 if( t1-t0 >= 1000 ) {
354 System.out.println(
"Did "+nprobes1+
" in "+(t1-t0)+
"msecs, worklist has "+
_work_len+
" states, total probes "+nprobes+
", values="+
_values.size());
360 System.out.println(
"Total probes "+nprobes+
" in "+(t0-t2)+
"msecs, values="+
_values.size());
374 int y1 = idx==1 ? yx : x1;
375 if( vn!= vm && !vn.
isa(vm) ) {
377 System.out.println(n.
xstr()+
"("+all[x0]+
","+all[x1]+
","+all[x2]+
","+all[x3]+
") = "+vn);
378 System.out.println(n.
xstr()+
"("+all[idx==0?yx:x0]+
","+all[idx==1?yx:x1]+
","+all[idx==2?yx:x2]+
","+all[idx==3?yx:x3]+
") = "+vm);
391 assert err_n.
isa(err_m);
394 @SuppressWarnings(
"unchecked")
400 private static final int[]
stx_any =
new int[]{};
413 private static long xx(
int i0,
int i1,
int i2,
int i3 ) {
414 return i0+(i1<<8)+(i2<<16)+(i3<<24);
416 private static int xx(
long xx,
int i) {
return (
int)((
xx>>(i<<3)) & 0xffL); }