7676import org .graalvm .polyglot .Value ;
7777import org .graalvm .polyglot .io .IOAccess ;
7878import org .graalvm .wasm .GlobalRegistry ;
79- import org .graalvm .wasm .MemoryRegistry ;
8079import org .graalvm .wasm .RuntimeState ;
8180import org .graalvm .wasm .WasmContext ;
8281import org .graalvm .wasm .WasmFunctionInstance ;
@@ -216,7 +215,6 @@ private void runInContext(WasmCase testCase, Context context, List<Source> sourc
216215 }
217216
218217 final WasmContext wasmContext = WasmContext .get (null );
219- final List <WasmInstance > instanceList = moduleInstances .stream ().map (i -> toWasmInstance (i )).toList ();
220218
221219 final Value testFunction ;
222220 final String entryPoint = testCase .options ().getProperty ("entry-point" );
@@ -261,6 +259,7 @@ private void runInContext(WasmCase testCase, Context context, List<Source> sourc
261259 } finally {
262260 // Context may have already been closed, e.g. by __wasi_proc_exit.
263261 if (!wasmContext .environment ().getContext ().isClosed ()) {
262+ Collection <WasmInstance > instanceList = wasmContext .contextStore ().moduleInstances ().values ();
264263 // Save context state, and check that it's consistent with the previous one.
265264 if (iterationNeedsStateCheck (i )) {
266265 final ContextState contextState = saveContext (wasmContext , instanceList );
@@ -275,8 +274,8 @@ private void runInContext(WasmCase testCase, Context context, List<Source> sourc
275274 final boolean reinitMemory = requiresZeroMemory || iterationNeedsStateCheck (i + 1 );
276275 if (reinitMemory ) {
277276 for (WasmInstance instance : instanceList ) {
278- for (int j = 0 ; j < instance .store ().memories (). count (); ++j ) {
279- WasmMemoryLibrary .getUncached ().reset (instance .store (). memories (). memory (j ));
277+ for (int j = 0 ; j < instance .module ().memoryCount (); ++j ) {
278+ WasmMemoryLibrary .getUncached ().reset (instance .memory (j ));
280279 }
281280 for (int j = 0 ; j < instance .module ().tableCount (); ++j ) {
282281 instance .table (j ).reset ();
@@ -637,25 +636,28 @@ protected String suiteName() {
637636 }
638637
639638 private static InstanceState saveInstanceState (WasmInstance instance ) {
640- final MemoryRegistry memories = instance .store ().memories ().duplicate ();
639+ final WasmMemory [] memories = new WasmMemory [instance .module ().memoryCount ()];
640+ for (int i = 0 ; i < memories .length ; i ++) {
641+ memories [i ] = WasmMemoryLibrary .getUncached ().duplicate (instance .memory (i ));
642+ }
641643 final GlobalRegistry globals = instance .globals ().duplicate ();
642644 return new InstanceState (memories , globals );
643645 }
644646
645- private static ContextState saveContext (WasmContext context , List <WasmInstance > instances ) {
647+ private static ContextState saveContext (WasmContext context , Collection <WasmInstance > instances ) {
646648 return new ContextState (
647649 instances .stream ().map (instance -> saveInstanceState (instance )).toList (),
648650 context .fdManager ().size ());
649651 }
650652
651653 private static void assertInstanceEqual (InstanceState expectedState , InstanceState actualState ) {
652654 // Compare memories
653- final MemoryRegistry expectedMemories = expectedState .memories ();
654- final MemoryRegistry actualMemories = actualState .memories ();
655- Assert .assertEquals ("Mismatch in memory counts." , expectedMemories .count () , actualMemories .count () );
656- for (int i = 0 ; i < expectedMemories .count () ; i ++) {
657- final WasmMemory expectedMemory = expectedMemories . memory ( i ) ;
658- final WasmMemory actualMemory = actualMemories . memory ( i ) ;
655+ final WasmMemory [] expectedMemories = expectedState .memories ();
656+ final WasmMemory [] actualMemories = actualState .memories ();
657+ Assert .assertEquals ("Mismatch in memory counts." , expectedMemories .length , actualMemories .length );
658+ for (int i = 0 ; i < expectedMemories .length ; i ++) {
659+ final WasmMemory expectedMemory = expectedMemories [ i ] ;
660+ final WasmMemory actualMemory = actualMemories [ i ] ;
659661 if (expectedMemory == null ) {
660662 Assert .assertNull ("Memory should be null" , actualMemory );
661663 } else {
@@ -690,7 +692,7 @@ private static void assertContextEqual(ContextState expectedState, ContextState
690692 Assert .assertEquals ("Mismatch in file descriptor counts." , expectedState .openedFdCount , actualState .openedFdCount );
691693 }
692694
693- private record InstanceState (MemoryRegistry memories , GlobalRegistry globals ) {
695+ private record InstanceState (WasmMemory [] memories , GlobalRegistry globals ) {
694696 }
695697
696698 private record ContextState (List <InstanceState > instanceState , int openedFdCount ) {
0 commit comments