Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/tools/wasm-ctor-eval.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,14 @@ class EvallingModuleRunner : public ModuleRunnerBase<EvallingModuleRunner> {
// serialize them.)
throw FailToEvalException("table.set: TODO");
}

Flow visitStringAs(StringAs* curr) {
// TODO: It is not clear how we can handle string.as, since it can lead to
// us needing string_views in globals, but string.as is not a constant
// instruction, so we cannot generate such globals atm. Perhaps we
// could generate them in the start function?
throw FailToEvalException("string.as: TODO");
}
};

// Build an artificial `env` module based on a module's imports, so that the
Expand Down
32 changes: 32 additions & 0 deletions test/lit/ctor-eval/string_view.wast
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
;; RUN: foreach %s %t wasm-ctor-eval --ctors=test --kept-exports=test --quiet -all -S -o - | filecheck %s

;; We cannot precompute string views atm.

(module
;; CHECK: (type $0 (func))

;; CHECK: (export "test" (func $test))
(export "test" (func $test))

;; CHECK: (func $test (type $0)
;; CHECK-NEXT: (local $temp-view (ref stringview_wtf16))
;; CHECK-NEXT: (local.set $temp-view
;; CHECK-NEXT: (string.as_wtf16
;; CHECK-NEXT: (string.const "test")
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $test
(local $temp-view (ref stringview_wtf16))
;; This code will remain: we cannot precompute a value that we store in a
;; global, as string.as is not a constant instruction that can appear in a
;; global.
(local.set $temp-view
(string.as_wtf16
(string.const "test")
)
)
)
)