mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-22 13:29:01 +00:00
compiler, runtime: enable go:wasmexport for wasip2 (#4499)
* compiler: prefer go:wasmexport over go:export * runtime, targets/wasip2: enable -buildmode=c-shared for wasip2 * runtime: rename import from wasi_run to wasiclirun (PR feedback)
This commit is contained in:
@@ -389,6 +389,13 @@ func (c *compilerContext) parsePragmas(info *functionInfo, f *ssa.Function) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If both //go:wasmexport and //go:export or //export are declared,
|
||||||
|
// only honor go:wasmexport.
|
||||||
|
if info.wasmExport != "" {
|
||||||
|
// TODO: log warning?
|
||||||
|
info.exported = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether this function can be used in //go:wasmimport or
|
// Check whether this function can be used in //go:wasmimport or
|
||||||
|
|||||||
@@ -6,18 +6,19 @@ import (
|
|||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"internal/wasi/cli/v0.2.0/environment"
|
"internal/wasi/cli/v0.2.0/environment"
|
||||||
|
wasiclirun "internal/wasi/cli/v0.2.0/run"
|
||||||
monotonicclock "internal/wasi/clocks/v0.2.0/monotonic-clock"
|
monotonicclock "internal/wasi/clocks/v0.2.0/monotonic-clock"
|
||||||
|
|
||||||
|
"internal/cm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type timeUnit int64
|
type timeUnit int64
|
||||||
|
|
||||||
//export wasi:cli/run@0.2.0#run
|
func init() {
|
||||||
func __wasi_cli_run_run() uint32 {
|
wasiclirun.Exports.Run = func() cm.BoolResult {
|
||||||
// These need to be initialized early so that the heap can be initialized.
|
callMain()
|
||||||
heapStart = uintptr(unsafe.Pointer(&heapStartSymbol))
|
return false
|
||||||
heapEnd = uintptr(wasm_memory_size(0) * wasmPageSize)
|
}
|
||||||
run()
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var args []string
|
var args []string
|
||||||
@@ -51,3 +52,6 @@ func sleepTicks(d timeUnit) {
|
|||||||
func ticks() timeUnit {
|
func ticks() timeUnit {
|
||||||
return timeUnit(monotonicclock.Now())
|
return timeUnit(monotonicclock.Now())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func beforeExit() {
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
//go:build tinygo.wasm && !wasip2 && !js
|
//go:build tinygo.wasm && !js
|
||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
"cpu": "generic",
|
"cpu": "generic",
|
||||||
"features": "+bulk-memory,+mutable-globals,+nontrapping-fptoint,+sign-ext",
|
"features": "+bulk-memory,+mutable-globals,+nontrapping-fptoint,+sign-ext",
|
||||||
"build-tags": ["tinygo.wasm", "wasip2"],
|
"build-tags": ["tinygo.wasm", "wasip2"],
|
||||||
|
"buildmode": "c-shared",
|
||||||
"goos": "linux",
|
"goos": "linux",
|
||||||
"goarch": "arm",
|
"goarch": "arm",
|
||||||
"linker": "wasm-ld",
|
"linker": "wasm-ld",
|
||||||
|
|||||||
Reference in New Issue
Block a user