summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPer Bothner <per@bothner.com>2017-04-30 19:39:19 -0700
committerPer Bothner <per@bothner.com>2017-04-30 19:39:19 -0700
commitd1cee7e932fb088db2ce066bd38187a022f102b4 (patch)
treeaf1ba144afcb07a0291be56515e72925da7121f3
parent491dc0bdbb16dd2406c1a26bc3e2b95ef35b060c (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--TODO4
-rw-r--r--gnu/expr/ChangeLog7
-rw-r--r--gnu/expr/Compilation.java10
-rw-r--r--gnu/kawa/javafx/ChangeLog5
-rw-r--r--gnu/kawa/javafx/defs.scm6
5 files changed, 26 insertions, 6 deletions
diff --git a/TODO b/TODO
index 66bc939f0..4ca2f04cc 100644
--- a/TODO
+++ b/TODO
@@ -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