wasmtime: Implement global.{get,set} for externref globals (#1969)

* wasmtime: Implement `global.{get,set}` for externref globals

We use libcalls to implement these -- unlike `table.{get,set}`, for which we
create inline JIT fast paths -- because no known toolchain actually uses
externref globals.

Part of #929

* wasmtime: Enable `{extern,func}ref` globals in the API
This commit is contained in:
Nick Fitzgerald
2020-07-02 14:04:01 -07:00
committed by GitHub
parent 3fa3ff2ece
commit bffd54c016
19 changed files with 520 additions and 79 deletions

View File

@@ -0,0 +1,13 @@
;; This test contains the changes in
;; https://github.com/WebAssembly/reference-types/pull/104, and can be deleted
;; once that merges and we update our upstream tests.
(module
(global $mr (mut externref) (ref.null extern))
(func (export "get-mr") (result externref) (global.get $mr))
(func (export "set-mr") (param externref) (global.set $mr (local.get 0)))
)
(assert_return (invoke "get-mr") (ref.null extern))
(assert_return (invoke "set-mr" (ref.extern 10)))
(assert_return (invoke "get-mr") (ref.extern 10))