- extensions jk_new_structure
authorvranyj1
Tue, 24 Jul 2012 14:58:23 +0000
branchjk_new_structure
changeset 1552 89c63e6303f1
parent 1551 2af2aa41bddb
child 1553 ee3e63c04778
- extensions ...
src/JavaFinalizationRegistry.st
src/JavaVM.st
src/libjava.rc
--- a/src/JavaFinalizationRegistry.st	Tue Jul 24 14:37:07 2012 +0000
+++ b/src/JavaFinalizationRegistry.st	Tue Jul 24 14:58:23 2012 +0000
@@ -157,6 +157,12 @@
         ].
     ].
     self grow.
+    activeReferees withIndexDo:[:value :index|
+        value isNil ifTrue:[
+            ^index
+        ].
+    ].
+    JavaVM internalError: 'No free finalization slot even after grow'.
 
     "Created: / 24-07-2012 / 01:19:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -170,7 +176,10 @@
 
 grow
 
-    self shouldImplement.
+    | newActiveReferees |
+    newActiveReferees := Array new: activeReferees size * 2.
+    newActiveReferees replaceFrom: 1 with: activeReferees.
+    activeReferees := newActiveReferees
 
     "Created: / 24-07-2012 / 01:20:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
--- a/src/JavaVM.st	Tue Jul 24 14:37:07 2012 +0000
+++ b/src/JavaVM.st	Tue Jul 24 14:58:23 2012 +0000
@@ -4438,8 +4438,10 @@
     retry := false.
     [ stream := aBlock value ] on:OpenError do:[:ex|
         (ex errorCode) == (OperatingSystem errorNumberFor:#EMFILE) ifTrue:[
+            "Worst case, try to cleanup"
             [
                 FinalizationLobby finalizeNow.
+                Delay waitForSeconds: 5. "/Give Java finalization thread a chance to clean up
                 ObjectMemory garbageCollect.
                 retry := true.
             ] on: Error do:[:ex|
--- a/src/libjava.rc	Tue Jul 24 14:37:07 2012 +0000
+++ b/src/libjava.rc	Tue Jul 24 14:58:23 2012 +0000
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\b          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.1.1\0"
-      VALUE "ProductDate", "Tue, 24 Jul 2012 14:41:08 GMT\0"
+      VALUE "ProductDate", "Tue, 24 Jul 2012 15:03:06 GMT\0"
     END
 
   END