examples: Add a GC call to the externref C example
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user