Added tests for newspace resizing (`ObjectMemory >> #newSpaceSize:`) jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 22 Sep 2017 12:06:12 +0100
branchjv
changeset 1955 509eae4c5c94
parent 1953 50499a3d9b19
child 1956 0ff367ab6eb1
Added tests for newspace resizing (`ObjectMemory >> #newSpaceSize:`)
RegressionTests__VMCrashTests.st
--- a/RegressionTests__VMCrashTests.st	Wed Aug 09 10:00:57 2017 +0100
+++ b/RegressionTests__VMCrashTests.st	Fri Sep 22 12:06:12 2017 +0100
@@ -144,6 +144,44 @@
     "Modified: / 24-06-2016 / 00:41:29 / jv"
 !
 
+test_newspace_resize
+
+    <timeout: 120> "2min"
+    <spawn: true>
+
+    | newSize newLimit holder |
+
+    newSize := ObjectMemory newSpaceSize.
+    [
+    ObjectMemory scavenge.
+    newLimit := (ObjectMemory newSpaceSize * 0.9) rounded.
+
+    "/ Fill in new space so it's 90% full, no garbage.
+    holder := OrderedCollection new.    
+    [ ObjectMemory newSpaceUsed < newLimit ] whileTrue:[
+        holder add: (Array new: 100).
+    ].
+    "/ Grow the new space to two times the current size.
+    ObjectMemory newSpaceSize: 2 * newSize.
+    self assert: (ObjectMemory newSpaceSize >= (2 * newSize)).
+    self assert: (ObjectMemory newSpaceUsed / ObjectMemory newSpaceSize) < 0.5.
+
+    "/ Fill in new space so it's 90% full, no garbage.
+    newLimit := (ObjectMemory newSpaceSize * 0.9) rounded.
+    [ ObjectMemory newSpaceUsed < newLimit ] whileTrue:[
+        holder add: (Array new: 100).
+    ].
+    "/ Grow the new space to two times the current size.
+    ObjectMemory newSpaceSize: newSize.
+    self assert: (ObjectMemory newSpaceSize < (newSize + 4096"page size as tolerance for page aligning")).
+
+    ] ensure:[ 
+        ObjectMemory newSpaceSize: newSize.  
+    ].
+
+    "Created: / 21-09-2017 / 23:16:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 test_stx_libjava_testSuite_inspect
     <timeout: 120> "2min"
     <spawn: true>