examples: Add a GC call to the externref C example

This commit is contained in:
Nick Fitzgerald
2020-07-21 09:39:04 -07:00
parent 2efb46afd5
commit 56c517d265

View File

@@ -82,6 +82,9 @@ int main() {
printf("Creating new `externref`...\n"); printf("Creating new `externref`...\n");
// Create a new `externref` value. // Create a new `externref` value.
//
// Note that if you need clean up for after the externref is reclaimed, you
// can use `wasmtime_externref_new_with_finalizer`.
wasm_val_t externref; wasm_val_t externref;
wasmtime_externref_new("Hello, World!", &externref); wasmtime_externref_new("Hello, World!", &externref);
assert(externref.kind == WASM_ANYREF); assert(externref.kind == WASM_ANYREF);
@@ -148,6 +151,11 @@ int main() {
assert(results[0].kind == WASM_ANYREF); assert(results[0].kind == WASM_ANYREF);
assert(wasm_ref_same(results[0].of.ref, externref.of.ref)); assert(wasm_ref_same(results[0].of.ref, externref.of.ref));
// We can GC any now-unused references to our externref that the store is
// holding.
printf("GCing within the store...\n");
wasmtime_store_gc(store);
// Clean up after ourselves at this point // Clean up after ourselves at this point
printf("All finished!\n"); printf("All finished!\n");
ret = 0; ret = 0;