Updated Branches: refs/heads/develop 6d071f01e -> 577e7143b
Clean up Alex's fix by putting common code in createCInitIfNeeded(). Remove Erik de Bruin's workaround for Flex-33713 since the issue is fixed. Add more memory for junit SDKSWCTests, compiling wireframe was running out of mememory. Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/577e7143 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/577e7143 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/577e7143 Branch: refs/heads/develop Commit: 577e7143bcd55da76e7fc96837baf1c866daacdc Parents: 6d071f0 Author: dloverin <[email protected]> Authored: Wed Oct 9 21:01:47 2013 -0400 Committer: dloverin <[email protected]> Committed: Wed Oct 9 21:01:47 2013 -0400 ---------------------------------------------------------------------- compiler.tests/build.xml | 2 +- .../as/codegen/ClassDirectiveProcessor.java | 72 ++++++++------------ 2 files changed, 31 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/577e7143/compiler.tests/build.xml ---------------------------------------------------------------------- diff --git a/compiler.tests/build.xml b/compiler.tests/build.xml index f5de385..00ee1b4 100644 --- a/compiler.tests/build.xml +++ b/compiler.tests/build.xml @@ -163,7 +163,7 @@ <mkdir dir="${compiler.tests}/results"/> <mkdir dir="${compiler.tests}/temp"/> <junit dir="${compiler.tests}" - fork="yes" forkMode="perBatch" maxmemory="256m" timeout="300000" + fork="yes" forkMode="perBatch" maxmemory="512m" timeout="300000" printsummary="true" showoutput="true" haltonerror="false" haltonfailure="false" failureproperty="tests.functional.failed"> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/577e7143/compiler/src/org/apache/flex/compiler/internal/as/codegen/ClassDirectiveProcessor.java ---------------------------------------------------------------------- diff --git a/compiler/src/org/apache/flex/compiler/internal/as/codegen/ClassDirectiveProcessor.java b/compiler/src/org/apache/flex/compiler/internal/as/codegen/ClassDirectiveProcessor.java index bf162bb..2f62f96 100644 --- a/compiler/src/org/apache/flex/compiler/internal/as/codegen/ClassDirectiveProcessor.java +++ b/compiler/src/org/apache/flex/compiler/internal/as/codegen/ClassDirectiveProcessor.java @@ -605,36 +605,11 @@ class ClassDirectiveProcessor extends DirectiveProcessor cinit_insns.addInstruction(OP_returnvoid); - if (this.cinfo.cInit == null) - { - // Speculatively initialize the class' cinit - // (static class initializer routine)'s data - // structures; the code generator may need to - // store information in them. - this.cinfo.cInit = new MethodInfo(); - MethodBodyInfo cinit_info = new MethodBodyInfo(); - cinit_info.setMethodInfo(this.cinfo.cInit); + createCInitIfNeeded(); - this.classStaticScope.setMethodInfo(this.cinfo.cInit); - this.classStaticScope.methodVisitor = emitter.visitMethod(this.cinfo.cInit); - this.classStaticScope.methodVisitor.visit(); - this.classStaticScope.methodBodyVisitor = this.classStaticScope.methodVisitor.visitBody(cinit_info); - this.classStaticScope.methodBodyVisitor.visit(); - } - - /* - * FIXME: NPE while compiling 'spark.swc' - * - * erikdebruin: I'm just bypassing that with this null check. Someone - * who knows what's going on here should probably take a - * look WHY this was failing... - */ - if (this.classStaticScope.methodBodyVisitor != null) - { - this.classStaticScope.methodBodyVisitor.visitInstructionList(cinit_insns); - this.classStaticScope.methodBodyVisitor.visitEnd(); - this.classStaticScope.methodVisitor.visitEnd(); - } + this.classStaticScope.methodBodyVisitor.visitInstructionList(cinit_insns); + this.classStaticScope.methodBodyVisitor.visitEnd(); + this.classStaticScope.methodVisitor.visitEnd(); } else { @@ -1230,19 +1205,7 @@ class ClassDirectiveProcessor extends DirectiveProcessor if ( createNewCinit ) { - // Speculatively initialize the class' cinit - // (static class initializer routine)'s data - // structures; the code generator may need to - // store information in them. - this.cinfo.cInit = new MethodInfo(); - MethodBodyInfo cinit_info = new MethodBodyInfo(); - cinit_info.setMethodInfo(this.cinfo.cInit); - - this.classStaticScope.setMethodInfo(this.cinfo.cInit); - this.classStaticScope.methodVisitor = emitter.visitMethod(this.cinfo.cInit); - this.classStaticScope.methodVisitor.visit(); - this.classStaticScope.methodBodyVisitor = this.classStaticScope.methodVisitor.visitBody(cinit_info); - this.classStaticScope.methodBodyVisitor.visit(); + createCInitIfNeeded(); } InstructionList cgResult = null; @@ -1270,4 +1233,29 @@ class ClassDirectiveProcessor extends DirectiveProcessor this.iinitInsns.addAll(cgResult); } } + + /** + * Create a class init method and associated structure if it does already + * exist. + */ + private void createCInitIfNeeded() + { + if (this.cinfo.cInit == null) + { + // Speculatively initialize the class' cinit + // (static class initializer routine)'s data + // structures; the code generator may need to + // store information in them. + this.cinfo.cInit = new MethodInfo(); + MethodBodyInfo cinit_info = new MethodBodyInfo(); + cinit_info.setMethodInfo(this.cinfo.cInit); + + this.classStaticScope.setMethodInfo(this.cinfo.cInit); + this.classStaticScope.methodVisitor = emitter.visitMethod(this.cinfo.cInit); + this.classStaticScope.methodVisitor.visit(); + this.classStaticScope.methodBodyVisitor = this.classStaticScope.methodVisitor.visitBody(cinit_info); + this.classStaticScope.methodBodyVisitor.visit(); + } + } + }
