diff options
Diffstat (limited to 'src/main/java/com/seaofnodes/simple/print')
5 files changed, 21 insertions, 20 deletions
diff --git a/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java b/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java index 366ae376..a9f86ce8 100644 --- a/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java +++ b/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java @@ -1,13 +1,13 @@ package com.seaofnodes.simple.print; -import com.seaofnodes.simple.Ary; -import com.seaofnodes.simple.SB; -import com.seaofnodes.simple.Utils; import com.seaofnodes.simple.codegen.CodeGen; -import com.seaofnodes.simple.codegen.Encoding; import com.seaofnodes.simple.codegen.Encoding.Relo; +import com.seaofnodes.simple.codegen.Encoding; import com.seaofnodes.simple.node.*; import com.seaofnodes.simple.type.*; +import com.seaofnodes.simple.util.Ary; +import com.seaofnodes.simple.util.SB; +import com.seaofnodes.simple.util.Utils; import java.util.HashSet; public abstract class ASMPrinter { @@ -98,7 +98,8 @@ public abstract class ASMPrinter { if( fun._name != null ) sb.p(fun._name).p(" "); fun.sig().print(sb); sb.p("---------------------------").nl(); - iadr = (iadr + 15)&-16; // All function entries padded to 16 align + if( code._encoding!=null && code._encoding._padFunHeads ) + iadr = (iadr + 15)&-16; // All function entries padded to 16 align if( fun._frameAdjust != 0 ) iadr = doInst(iadr,sb,code,fun,cfgidx,fun,true,true); diff --git a/src/main/java/com/seaofnodes/simple/print/GraphVisualizer.java b/src/main/java/com/seaofnodes/simple/print/GraphVisualizer.java index e4cf2c31..20c8439a 100644 --- a/src/main/java/com/seaofnodes/simple/print/GraphVisualizer.java +++ b/src/main/java/com/seaofnodes/simple/print/GraphVisualizer.java @@ -3,7 +3,7 @@ package com.seaofnodes.simple.print; import com.seaofnodes.simple.Parser; import com.seaofnodes.simple.node.*; import java.util.*; -import static com.seaofnodes.simple.Utils.TODO; +import static com.seaofnodes.simple.util.Utils.TODO; /** * Simple visualizer that outputs GraphViz dot format. @@ -155,7 +155,7 @@ public class GraphVisualizer { private void scope( StringBuilder sb, ScopeNode scope ) { sb.append("\tnode [shape=plaintext];\n"); int last = scope.nIns(); - int max = scope._lexSize.size(); + int max = scope.depth(); for( int i = 0; i < max; i++ ) { int level = max-i-1; String scopeName = makeScopeName(scope, level); @@ -169,7 +169,7 @@ public class GraphVisualizer { sb.append("\t\t\t<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n"); // Add the scope level sb.append("\t\t\t<TR><TD BGCOLOR=\"cyan\">").append(level).append("</TD>"); - int lexStart=scope._lexSize.at(level); + int lexStart = scope._kinds.at(level)._lexSize; for( int j=lexStart; j<last; j++ ) { var v = scope._vars.at(j); sb.append("<TD PORT=\"").append(makePortName(scopeName, v._name)).append("\">").append(v._name).append("</TD>"); @@ -243,7 +243,7 @@ public class GraphVisualizer { while( def instanceof ScopeNode lazy ) def = lazy.in(v._idx); if( def==null ) continue; - while( level < scope._lexSize.size() && v._idx >= scope._lexSize.at(level) ) + while( level < scope.depth() && v._idx >= scope._kinds.at(level)._lexSize ) level++; String scopeName = makeScopeName(scope, level-1); sb.append("\t") diff --git a/src/main/java/com/seaofnodes/simple/print/IRPrinter.java b/src/main/java/com/seaofnodes/simple/print/IRPrinter.java index c6e478c5..d1265bef 100644 --- a/src/main/java/com/seaofnodes/simple/print/IRPrinter.java +++ b/src/main/java/com/seaofnodes/simple/print/IRPrinter.java @@ -1,11 +1,11 @@ package com.seaofnodes.simple.print; -import com.seaofnodes.simple.Ary; -import com.seaofnodes.simple.SB; -import com.seaofnodes.simple.Utils; import com.seaofnodes.simple.codegen.CodeGen; import com.seaofnodes.simple.node.*; import com.seaofnodes.simple.type.TypeFunPtr; +import com.seaofnodes.simple.util.Ary; +import com.seaofnodes.simple.util.SB; +import com.seaofnodes.simple.util.Utils; import java.util.ArrayList; import java.util.BitSet; import java.util.HashMap; @@ -61,7 +61,7 @@ public abstract class IRPrinter { if( n instanceof CFGNode || n instanceof MultiNode ) { if( !gap ) sb.p("\n"); // Blank before multihead if( n instanceof FunNode fun ) - fun.sig().print(sb.p("--- ").p(fun._name==null ? "" : fun._name).p(" "),false).p("----------------------\n"); + fun.sig().print(sb.p("--- ").p(fun._name==null ? "" : fun._name).p(" ")).p("----------------------\n"); printLine( n, sb ); // Print head while( --i >= 0 ) { Node t = rpos.get(i); @@ -72,7 +72,7 @@ public abstract class IRPrinter { FunNode fun = ret.fun(); sb.p("--- "); if( fun != null ) - fun.sig().print(sb.p(fun._name==null ? "" : fun._name).p(" "),false); + fun.sig().print(sb.p(fun._name==null ? "" : fun._name).p(" ")); sb.p("----------------------\n"); } if( !(n instanceof CallNode) ) { diff --git a/src/main/java/com/seaofnodes/simple/print/JSViewer.java b/src/main/java/com/seaofnodes/simple/print/JSViewer.java index 76c64c71..62ff0001 100644 --- a/src/main/java/com/seaofnodes/simple/print/JSViewer.java +++ b/src/main/java/com/seaofnodes/simple/print/JSViewer.java @@ -1,10 +1,10 @@ package com.seaofnodes.simple.print; -import com.seaofnodes.simple.SB; -import com.seaofnodes.simple.Utils; import com.seaofnodes.simple.codegen.CodeGen; import com.seaofnodes.simple.node.*; import com.seaofnodes.simple.type.*; +import com.seaofnodes.simple.util.SB; +import com.seaofnodes.simple.util.Utils; import java.io.IOException; import java.nio.file.Paths; import java.util.Collection; @@ -192,14 +192,14 @@ public class JSViewer implements AutoCloseable { private static void scope( SB sb, ScopeNode scope ) { sb.i().p("node [shape=plaintext];\n"); int last = scope.nIns(); - int max = scope._lexSize.size()+1; // One more than lexsize + int max = scope.depth()+1; // One more than lexsize for( int i = 0; i < max; i++ ) { int level = max-i-1; String scopeName = makeScopeName(scope, level); sb.i().p("subgraph cluster_").p(scopeName).p(" {\n").ii(); // Magic "cluster_" in the subgraph name sb.i().p(scopeName).p(" [label=<\n").ii(); sb.i().p("<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n"); - int lexStart = level==0 ? 0 : scope._lexSize.at(level-1); + int lexStart = level==0 ? 0 : scope._kinds.at(level-1)._lexSize; // Special for memory ScopeMinNode MemMergeNode n = scope.nIns()>1 ? scope.mem() : null; @@ -365,7 +365,7 @@ public class JSViewer implements AutoCloseable { while( def instanceof ScopeNode lazy ) def = lazy.in(v._idx); if( def==null ) continue; - while( level < scope._lexSize.size() && v._idx >= scope._lexSize.at(level) ) + while( level < scope.depth() && v._idx >= scope._kinds.at(level)._lexSize ) level++; String scopeName = makeScopeName(scope, level); sb.i() diff --git a/src/main/java/com/seaofnodes/simple/print/SimpleWebSocket.java b/src/main/java/com/seaofnodes/simple/print/SimpleWebSocket.java index 7655213d..4077533d 100644 --- a/src/main/java/com/seaofnodes/simple/print/SimpleWebSocket.java +++ b/src/main/java/com/seaofnodes/simple/print/SimpleWebSocket.java @@ -1,6 +1,6 @@ package com.seaofnodes.simple.print; -import com.seaofnodes.simple.Utils; +import com.seaofnodes.simple.util.Utils; import java.io.*; import java.net.ServerSocket; import java.net.Socket; |
