You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by go...@apache.org on 2012/12/08 02:26:31 UTC

svn commit: r1418588 - in /incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units: MXMLCompilationUnit.java requests/ABCBytesRequestResult.java

Author: gordonsmith
Date: Sat Dec  8 01:26:30 2012
New Revision: 1418588

URL: http://svn.apache.org/viewvc?rev=1418588&view=rev
Log:
Falcon: Made it easy to inspect the ABC produced by any compilation unit.

I've added a toString() method to ABCBytesRequestResult that produces an ABC dump using ABCDumpVisitor. You can set a breakpoint in a compilation unit's handleABCBytesRequest() (for example, in MXMLCompilationUnit if you are compiling MXML) and just look at the ABCBytesRequestResult in the debugger to see the dump. This is similar to how you can see entire ASTs and scopes in the debugger.

Modified:
    incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/MXMLCompilationUnit.java
    incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/requests/ABCBytesRequestResult.java

Modified: incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/MXMLCompilationUnit.java
URL: http://svn.apache.org/viewvc/incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/MXMLCompilationUnit.java?rev=1418588&r1=1418587&r2=1418588&view=diff
==============================================================================
--- incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/MXMLCompilationUnit.java (original)
+++ incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/MXMLCompilationUnit.java Sat Dec  8 01:26:30 2012
@@ -195,13 +195,15 @@ public class MXMLCompilationUnit extends
         startProfile(Operation.GET_ABC_BYTES);
         try
         {
-            return CodeGeneratorManager.getCodeGenerator().generate(project.getWorkspace().getExecutorService(),
-                    project.getUseParallelCodeGeneration(),
-                    getFilenameNoPath(),
-                    fileNode,
-                    getProject(),
-                    isInvisible(),
-                    getEncodedDebugFiles());
+            IABCBytesRequestResult result = CodeGeneratorManager.getCodeGenerator().generate(
+                project.getWorkspace().getExecutorService(),
+                project.getUseParallelCodeGeneration(),
+                getFilenameNoPath(),
+                fileNode,
+                getProject(),
+                isInvisible(),
+                getEncodedDebugFiles());
+            return result;
         }
         finally
         {

Modified: incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/requests/ABCBytesRequestResult.java
URL: http://svn.apache.org/viewvc/incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/requests/ABCBytesRequestResult.java?rev=1418588&r1=1418587&r2=1418588&view=diff
==============================================================================
--- incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/requests/ABCBytesRequestResult.java (original)
+++ incubator/flex/falcon/trunk/compiler/src/org/apache/flex/compiler/internal/units/requests/ABCBytesRequestResult.java Sat Dec  8 01:26:30 2012
@@ -19,10 +19,16 @@
 
 package org.apache.flex.compiler.internal.units.requests;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
 
+import org.apache.commons.io.output.StringBuilderWriter;
+import org.apache.flex.abc.ABCParser;
+import org.apache.flex.abc.print.ABCDumpVisitor;
 import org.apache.flex.compiler.internal.embedding.EmbedData;
 import org.apache.flex.compiler.problems.ICompilerProblem;
 import org.apache.flex.compiler.units.requests.IABCBytesRequestResult;
@@ -115,4 +121,24 @@ public class ABCBytesRequestResult imple
     private final byte[] bytes;
     private final ICompilerProblem[] problems;
     private final Set<EmbedData> embeds;
+    
+    
+    @Override
+    public String toString()
+    {
+        StringBuilder sb = new StringBuilder();
+        PrintWriter out = new PrintWriter(new StringBuilderWriter(sb));
+        
+        ABCParser parser = null;
+        try
+        {
+            parser = new ABCParser(new ByteArrayInputStream(bytes));
+        }
+        catch (IOException e)
+        {
+        }
+        parser.parseABC(new ABCDumpVisitor(out));
+        
+        return sb.toString();
+    }
 }