diff options
author | Per Bothner <per@bothner.com> | 2017-04-30 19:39:19 -0700 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 2017-04-30 19:39:19 -0700 |
commit | d1cee7e932fb088db2ce066bd38187a022f102b4 (patch) | |
tree | af1ba144afcb07a0291be56515e72925da7121f3 | |
parent | 491dc0bdbb16dd2406c1a26bc3e2b95ef35b060c (diff) |
* Compilation.java (generateBytecode):Sometimes create "$run$" method..invoke
If the super class defines a non-abstract "run" and an abstract "$run$"
generate the latter rather then the former for the body method. This is
useful for a superclass "wrapping" the run method, as used for JavaFX.
* defs.scm: Change how 'start' method wraps module body.
This broke at some point in the invoke branch.
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | gnu/expr/ChangeLog | 7 | ||||
-rw-r--r-- | gnu/expr/Compilation.java | 10 | ||||
-rw-r--r-- | gnu/kawa/javafx/ChangeLog | 5 | ||||
-rw-r--r-- | gnu/kawa/javafx/defs.scm | 6 |
5 files changed, 26 insertions, 6 deletions
@@ -1,8 +1,6 @@ BEFORE Kawa 3.0 -- Make 2.4 release from master. -- Merge invoke branch and set version number to 2.92 -- Get JavaFX script applications to work again. +- Merge invoke branch and set version number to 2.93 - Fix nested scan patterns. - Document scan patterns. - Finish SRFI-140. diff --git a/gnu/expr/ChangeLog b/gnu/expr/ChangeLog index c0da492b9..511a8b42f 100644 --- a/gnu/expr/ChangeLog +++ b/gnu/expr/ChangeLog @@ -1,3 +1,10 @@ +2017-04-30 Per Bothner <per@bothner.com> + + * Compilation.java (generateBytecode):Sometimes create "$run$" method.. + If the super class defines a non-abstract "run" and an abstract "$run$" + generate the latter rather then the former for the body method. This is + useful for a superclass "wrapping" the run method, as used for JavaFX. + 2017-04-29 Per Bothner <per@bothner.com> Better compilation even if supplied-optional booleans are used. diff --git a/gnu/expr/Compilation.java b/gnu/expr/Compilation.java index 8951104d2..683b32f5f 100644 --- a/gnu/expr/Compilation.java +++ b/gnu/expr/Compilation.java @@ -1873,7 +1873,15 @@ public class Compilation implements SourceLocator apply_method = startClassInit(); } else { Type[] arg_types = { typeCallContext }; - apply_method = curClass.addMethod ("run", arg_types, Type.voidType, + ClassType sup = module.getSuperType(); + Method srun = sup.getMethod("run", arg_types); + String mname = "run"; + if (srun != null && ! srun.isAbstract()) { + Method srunx = sup.getMethod("$run$", arg_types); + if (srunx != null && srunx.isAbstract()) + mname = "$run$"; + } + apply_method = curClass.addMethod (mname, arg_types, Type.voidType, Access.PUBLIC+Access.FINAL); apply_method.initCode(); } diff --git a/gnu/kawa/javafx/ChangeLog b/gnu/kawa/javafx/ChangeLog index 0cca238ef..9efe19ce3 100644 --- a/gnu/kawa/javafx/ChangeLog +++ b/gnu/kawa/javafx/ChangeLog @@ -1,3 +1,8 @@ +2017-04-30 Per Bothner <per@bothner.com> + + * defs.scm: Change how 'start' method wraps module body. + This broke at some point in the invoke branch. + 2016-11-28 Per Bothner <per@bothner.com> * defs.scm: Add missing splice operators. diff --git a/gnu/kawa/javafx/defs.scm b/gnu/kawa/javafx/defs.scm index 5208a5799..ff21ed603 100644 --- a/gnu/kawa/javafx/defs.scm +++ b/gnu/kawa/javafx/defs.scm @@ -54,7 +54,9 @@ (title ::java.lang.String) (*stage* ::javafx.stage.Stage) ((run-scene)::void #!void) - ((run ctx::gnu.mapping.CallContext)::void #!abstract) + ((run ctx::gnu.mapping.CallContext)::void + (javafx.application.Application:launch ((this):getClass))) + (($run$ ctx::gnu.mapping.CallContext)::void #!abstract) ((run)::void (javafx.application.Application:launch ((this):getClass) @gnu.expr.ApplicationMainSupport:commandLineArgArray)) ((runAsMain)::void @@ -62,7 +64,7 @@ ((start (stage ::javafx.stage.Stage))::void (set! *stage* stage) (let ((ctx (gnu.mapping.CallContext:getInstance))) - ((this):run ctx) + ((this):$run$ ctx) (ctx:runUntilDone)))) (define-constant {gnu.kawa.reflect/ObjectBuilder}:javafx.animation.Timeline |