1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00
Commit graph

74 commits

Author SHA1 Message Date
Ian Price
05c57a6a66 Update Copyright Headers
* module/Makefile.am:
* module/language/cps/compile-js.scm:
* module/language/cps/spec.scm:
* module/language/javascript.scm:
* module/language/javascript/spec.scm:
* module/language/js-il.scm:
* module/language/js-il/compile-javascript.scm:
* module/language/js-il/inlining.scm:
* module/language/js-il/runtime.js: Update copyright headers
2017-08-28 14:08:31 +01:00
Ian Price
062e413cda Keywords cannot be both keyword and optional
* module/language/js-il/compile-javascript.scm
  (compile-jump-table, bind-opt-kw-args): Keywords should not be
  parsed as optional arguments when both are present.
2017-08-27 22:23:39 +01:00
Ian Price
c5fa12f344 Implement variable-bound? builtin
* module/language/js-il/runtime.js(variable-bound?): Implement builtin
2017-08-17 00:06:12 +01:00
Ian Price
b84797947d pop-fluid uses field of frame not fluid
* module/language/js-il/runtime.js(pop-fluid): Fix primitive.
2017-08-17 00:06:12 +01:00
Ian Price
7e5d9d945e Argument to make-fluid is optional
* module/language/js-il/runtime.js(make-fluid): Supply default argument
2017-08-17 00:06:11 +01:00
Ian Price
fd2445fcf4 *features* is an empty list
* module/language/js-il/runtime.js(*features*): Stop stubbing
2017-08-17 00:06:11 +01:00
Ian Price
8321baee15 Implement list builtins
* module/language/js-il/runtime.js
  (cons, memq, member, delete!): Implement builtins
2017-08-17 00:06:11 +01:00
Ian Price
7ee8973df5 Implement Hook Builtins
* module/language/js-il/runtime.js:
  (scheme.Hook): new constructor
  (make-hook, run-hook): Implement builtins.
2017-08-17 00:06:11 +01:00
Ian Price
84aa3697cc Search for variables in imports.
* module/language/js-il/runtime.js:
  (scm_module_variable): Look in imports if not in obarray.
  (module_imported_variable): New procedure.
  (scm_module_index_obarray, scm_module_index_uses,
  scm_module_index_import_obarray): New variables.
2017-08-16 21:34:10 +01:00
Ian Price
d3dea512c9 Separate public / private module lookups
* module/language/js-il/runtime.js:
  (scm_public_variable, scm_module_public_interface,
  module_public_interface_var, scm_post_boot_init_modules):
  Implement Public Variable Lookup
  (scm_private_lookup, scm_private_variable): Implement Private Lookup
2017-08-16 21:30:28 +01:00
Ian Price
17e48e8641 scheme.HashTable uses ES6 Map objects
* module/language/js-il/runtime.js:
  (scheme.HashTable): Change object interface.
  (cached-module-box): Update primitive.
  (scm_module_ensure_local_variable, def_guile_val): Update helpers
  (scm_hash): Remove helper.
  (make-weak-key-hash-table, hash-clear!, hashq-remove! hashq-ref,
  hashq-set!, hash-for-each): Update builtins.
  (make-weak-value-hash-table, hash-map->list): New builtins.
2017-08-16 20:34:51 +01:00
Ian Price
e57f9bc06a Reimplement JS module system primitives.
* module/language/js-il/runtime.js
  (scm_hash, scheme.HashTable): moved for bootstrapping purposes.

  (define!, cached-toplevel-box, cached-module-box, current-module,
  resolve): Reimplement primitives.

  (define!, module-local-variable, module-variable,
  %get-pre-modules-obarray, set-current-module): Reimplement builtin
  procedures.

  (make-undefined-variable): New builtin procedure.

  (scm_pre_modules_obarray, the_root_module, scm_public_lookup,
  scm_public_variable, scm_private_lookup, scm_current_module,
  scm_lookup, scm_module_ensure_local_variable, scm_module_variable,
  scm_module_define, module_system_is_booted,
  module_make_local_var_x_var, the_module, k_ensure,
  resolve_module_var, scm_post_boot_init_modules): New helper
  variables and procedures, designed to resemble C versions.

  (scheme.call): New helper procedure

  (def_guile0, def_guile_val): Reimplement helper procedure.
2017-08-14 16:52:28 +01:00
Ian Price
166def2da0 Implement unboxed integer primitives.
* module/language/js-il/runtime.js (u64-=, u64->scm): New primitives.
2017-08-14 16:31:20 +01:00
Ian Price
3f9bc2dbb0 Implement basic `equal?' implementation
* module/language/js-il/runtime.js (equal?): Remove primitive.
  Implement as builtin procedure. This version Only handles pairs.
2017-08-14 16:26:39 +01:00
Ian Price
024bd93b0d modules should be passed current continuation
* module/language/js-il/runtime.js (primitive-load-path): modules
  should be passed the current continuation.
2017-08-11 14:02:13 +01:00
Ian Price
56439a88ae Add `guild jslink' to bundle JS programs
* module/Makefile.am (SOURCES): Install runtime.js and jslink.scm
* module/language/js-il/compile-javascript.scm (compile-exp):
  Compilation units take a continuation to facilitate linking.
* module/scripts/jslink.scm: New script.
2017-08-09 16:06:50 +01:00
Ian Price
7438a192f8 Unwind prompt frames
* module/language/js-il/runtime.js(unwind): Unwind prompts.
2017-08-03 00:26:02 +01:00
Ian Price
2da7a82d9d struct-set! primitive returns no values
* module/language/js-il/runtime.js (struct-set!): Don't return a value.
2017-08-03 00:23:45 +01:00
Ian Price
70c25b1290 Make child structs applicable.
* module/language/js-il/runtime.js (scheme.Struct): When certain flags
  are set, child structs should be marked as applicable.
2017-08-03 00:22:03 +01:00
Ian Price
46fa3b2fb8 Implement misc built-ins
* module/language/js-il/runtime.js
  (scm->u64): New primitive
  (integer?, char=?, make-fluid, read-hash-extend, make-hook,
  simple-format, scm-error): Implement built-ins.
  (syntax-session-id, macroexpand, %exception-handler,
  print-exception, *features*, %load-hook, current-reader): Stubbed
  variables.
2017-08-03 00:20:50 +01:00
Ian Price
3c62ab8185 Implement module built-ins.
* module/language/js-il/runtime.js
  (variable?): New Primitive.
  (primitive-load-path, module-local-variable, module-variable,
  %get-pre-modules-obarray, set-current-module): Implement built-ins.
2017-08-03 00:06:10 +01:00
Ian Price
3d29f2874f Implement procedure built-ins.
* module/language/js-il/runtime.js
  (procedure?, set-procedure-property!, make-procedure-with-setter): Implement.
2017-08-03 00:03:46 +01:00
Ian Price
bfaf07091a Implement hashtable built-ins
* module/language/js-il/runtime.js
  (scheme.HashTable): New Constructor.
  (make-hash-table, hash-clear!, hashq-remove!, hashq-ref, hashq-set!,
  hash-for-each): Implement built-ins.
2017-08-03 00:02:45 +01:00
Ian Price
30cc1e0751 scm_struct_init skips hidden fields.
* module/language/js-il/runtime.js (scm_struct_init): skip 'h' fields.
2017-08-02 22:55:00 +01:00
Ian Price
30dc57cb04 define! primitive only takes one argument.
* module/language/js-il/runtime.js (define!): Ignore argument.
2017-08-02 22:46:13 +01:00
Ian Price
ebe9d00153 Implement struct built-ins.
* module/language/js-il/runtime.js
  (struct?): New primitive.
  (<applicable-struct-vtable>, record-type-vtable,
  set-struct-vtable-name!, make-struct): Implement built-ins.
2017-08-02 22:44:27 +01:00
Ian Price
2273eb4d06 Implement built-in string procedures.
* module/language/js-il/runtime.js
  (string-append): Extend to more than 2 arguments.
  (string-join): New procedure.
2017-08-02 21:17:22 +01:00
Ian Price
2adebea5d0 Implement built-in symbol procedures.
* module/language/js-il/runtime.js
  (symbol->string, gensym): New procedures.
2017-08-02 21:14:57 +01:00
Ian Price
5d49a5be18 Implement built-in syntax procedures.
* module/language/js-il/runtime.js
  (syntax?, make-syntax, syntax-expression, syntax-wrap,
  syntax-module): New procedures.
2017-08-02 21:12:47 +01:00
Ian Price
2a3c43a5a9 Implement builtin list procedures.
* module/language/js-il/runtime.js
  (make-list, length, list?, reverse, append, memq, member, delete!):
  New procedures
2017-08-02 21:11:02 +01:00
Ian Price
0b9b08a28d Implement immediate version of vector primitives.
* module/language/js-il/runtime.js
  (make-vector/immediate, vector-set!/immediate,
  vector-ref/immediate): New Primitives.
2017-08-02 21:03:11 +01:00
Ian Price
cf1ddd466b Implement structs in runtime.js
* module/language/js-il/runtime.js:
  (scheme.Struct): new type.
  (allocate-struct/immediate, struct-vtable, struct-set!, struct-ref,
  struct-set!/immediate, struct-ref/immediate): Implement primitives.
  (def_guile_val): New helper.
  (string=?, string-append): Implement string functions.
  (standard-vtable-fields, <standard-vtable>, vtable-index-layout,
  vtable-index-printer, vtable-offset-user, make-struct/no-tail,
  make-vtable, struct-vtable?): Implement struct functions.
2017-06-28 17:15:57 +01:00
Ian Price
479294fc05 Implement Winding & Unwinding
* module/language/js-il/runtime.js
  (wind, unwind): Implement.
  (callcc): Wind when invoking continuation.
2017-06-28 15:03:03 +01:00
Ian Price
ff7fff920d Add macro type in runtime.js
* module/language/js-il/runtime.js
  (scheme.Macro): Add type.
  (make-syntax-transformer): Add guile procedure.
2017-06-28 10:38:00 +01:00
Ian Price
b3c0fcdb25 Implement cached-module-box
* module/language/js-il/runtime.js (scheme): Add module_cache field.
  (scheme.primitives) Add cached-module-box primitive.
  (def_guile0) Convenience for adding to (guile) module cache.
2017-06-22 16:59:02 +01:00
Ian Price
2204fb64f6 Add more variables to no-values-primitives
* module/language/js-il/inlining.scm (no-values-primitives):
  Add primitives
2017-06-20 23:12:09 +01:00
Ian Price
536d94feb3 Compile Syntax Objects to Javascript
* module/language/js-il/compile-javascript.scm (compile-const):
  Handle the new syntax object struct.
* module/language/js-il/runtime.js(scheme.Syntax): Add Syntax Object type
2017-06-20 22:50:06 +01:00
Ian Price
936050c657 Add some primitives to runtime.js
* module/language/js-il/runtime.js(add/immediate, sub/immediate,
  load-u64, u64-=-scm, handle-interrupts): Add primitives.
2017-06-16 21:48:27 +01:00
Ian Price
e771241020 JS-IL inliner has different count-calls for different clauses
* module/language/js-il/inlining.scm(inline-single-calls): Factor into
  another function inline-clause, so that count-calls is only called on
  the clause.
2017-06-16 17:42:49 +01:00
Ian Price
723fc850f6 Add #:js-inline? and #:js-flatten? debugging options
* module/language/js-il/compile-javascript.scm (compile-javascript):
  Check for #:js-inline? and #:js-flatten?, and turn off
  inline-single-calls and flatten-blocks respectively.
2017-06-15 22:34:39 +01:00
Ian Price
602bfb559d Update primitives in no-values-primitives
* module/language/js-il/inlining.scm (no-values-primitives): Update.
2017-06-15 20:25:24 +01:00
Ian Price
89029a54f4 Explicitly test for undefined arguments to handle false values like 0 2015-06-24 19:57:28 +01:00
Ian Price
88c052214f Handle more identifier characters 2015-06-23 15:46:26 +01:00
Ian Price
a680a4cb9d Change local type representation and remove var type 2015-06-22 16:18:18 +01:00
Ian Price
e9f37e6a31 Change function type representation 2015-06-22 16:18:12 +01:00
Ian Price
a7b2dfa581 Change program type representation 2015-06-22 16:08:20 +01:00
Ian Price
f0537e39ee Rewrite js-il inliner 2015-06-22 16:08:20 +01:00
Ian Price
2e10f55426 Different types for Continuation and Variable identifiers 2015-06-22 16:08:02 +01:00
Ian Price
78cacbe450 Implement fluid primitives 2015-06-18 04:14:44 +01:00
Ian Price
46597b49dc Use scheme.frame.Prompt objects for prompts on dynstack 2015-06-18 04:14:44 +01:00