From 02411bcd7c8eda9c694a5755aff0a516d4983952 Mon Sep 17 00:00:00 2001 From: Evan Phoenix Date: Sun, 22 Jan 2023 15:30:59 -0800 Subject: all: implement wasmimport directive Go programs can now use the //go:wasmimport module_name function_name directive to import functions from the WebAssembly runtime. For now, the directive is restricted to the runtime and syscall/js packages. * Derived from CL 350737 * Original work modified to work with changes to the IR conversion code. * Modification of CL 350737 changes to fully exist in Unified IR path (emp) * Original work modified to work with changes to the ABI configuration code. * Fixes #38248 Co-authored-by: Vedant Roy Co-authored-by: Richard Musiol Co-authored-by: Johan Brandhorst-Satzkorn Change-Id: I740719735d91c306ac718a435a78e1ee9686bc16 Reviewed-on: https://go-review.googlesource.com/c/go/+/463018 TryBot-Result: Gopher Robot Run-TryBot: Johan Brandhorst-Satzkorn Reviewed-by: Matthew Dempsky Reviewed-by: Dmitri Shuralyov Auto-Submit: Johan Brandhorst-Satzkorn Reviewed-by: Johan Brandhorst-Satzkorn --- src/cmd/compile/internal/noder/reader.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/cmd/compile/internal/noder/reader.go') diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index b7605e9317..e4ab80b2d0 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -1081,6 +1081,18 @@ func (r *reader) funcExt(name *ir.Name, method *types.Sym) { fn.Pragma = r.pragmaFlag() r.linkname(name) + if buildcfg.GOARCH == "wasm" { + xmod := r.String() + xname := r.String() + + if xmod != "" && xname != "" { + fn.WasmImport = &ir.WasmImport{ + Module: xmod, + Name: xname, + } + } + } + typecheck.Func(fn) if r.Bool() { -- cgit v1.3