[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 67/99: Make child structs applicable.
From: |
Christopher Allan Webber |
Subject: |
[Guile-commits] 67/99: Make child structs applicable. |
Date: |
Sun, 10 Oct 2021 21:51:04 -0400 (EDT) |
cwebber pushed a commit to branch compile-to-js-merge
in repository guile.
commit 70c25b1290cc1bf5f07fe432272e7b550f205201
Author: Ian Price <ianprice90@googlemail.com>
AuthorDate: Thu Aug 3 00:22:03 2017 +0100
Make child structs applicable.
* module/language/js-il/runtime.js (scheme.Struct): When certain flags
are set, child structs should be marked as applicable.
---
module/language/js-il/runtime.js | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/module/language/js-il/runtime.js b/module/language/js-il/runtime.js
index 72e0a0a..8e0480e 100644
--- a/module/language/js-il/runtime.js
+++ b/module/language/js-il/runtime.js
@@ -439,6 +439,22 @@ scheme.Struct = function (vtable, nfields) {
this.vtable = vtable;
this.fields = [];
+ if (this.vtable &&
this.vtable.hasOwnProperty('children_applicable_vtables')) {
+ this.is_vtable = true;
+ this.children_applicable = true;
+ }
+
+ if (this.vtable && this.vtable.hasOwnProperty('children_applicable')) {
+ this.is_applicable = true;
+ this.fun = function (self, cont) {
+ var scm_applicable_struct_index_procedure = 0;
+ var clos = self.fields[scm_applicable_struct_index_procedure];
+ return clos.fun(clos, cont);
+ };
+ } else {
+ this.fun = function () { throw "not applicable"; };
+ }
+
// FIXME: worth doing?
for(var i = 0; i < nfields; i++){
this.fields[i]=scheme.UNDEFINED;
- [Guile-commits] 90/99: Mention all arguments to guild jslink in --help, (continued)
- [Guile-commits] 90/99: Mention all arguments to guild jslink in --help, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 92/99: Merge branch 'compile-to-js-2017' into compile-to-js-rebase, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 99/99: Compile cps to bytecode by default, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 24/99: Primitives create multiple argument continuations., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 14/99: Add binop type, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 53/99: Implement Winding & Unwinding, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 63/99: Implement hashtable built-ins, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 66/99: Implement misc built-ins, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 61/99: define! primitive only takes one argument., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 69/99: Unwind prompt frames, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 67/99: Make child structs applicable.,
Christopher Allan Webber <=
- [Guile-commits] 74/99: Reimplement JS module system primitives., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 95/99: Fix import of lower-cps in compile-js.scm, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 73/99: Implement unboxed integer primitives., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 76/99: Separate public / private module lookups, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 77/99: Search for variables in imports., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 93/99: Fix module/Makefile.am after compile-to-js merge, Christopher Allan Webber, 2021/10/10