Use __MKEXTERNALADDRESS() instead of __MKOBJ()
authorStefan Vogel <sv@exept.de>
Mon, 01 Feb 2010 19:19:02 +0100
changeset 12675 f8ff1ae7ca20
parent 12674 80fbcc4be1d6
child 12676 18527baaa343
Use __MKEXTERNALADDRESS() instead of __MKOBJ()
FileStream.st
--- a/FileStream.st	Mon Feb 01 19:14:37 2010 +0100
+++ b/FileStream.st	Mon Feb 01 19:19:02 2010 +0100
@@ -1357,13 +1357,13 @@
             wasBlocked = __BLOCKINTERRUPTS();
 #if 0
             // The original code was:
-            __INST(handle) = fp = __MKOBJ((INT)f); __STORE(self, fp);
+            __INST(handle) = fp = __MKEXTERNALADDRESS(f); __STORE(self, fp);
             // but for that, gcc generates wrong code, which loads self (volatile) into
-            // a register (bp), then calls __MKOBJ, then stores indirect bp.
-            // That is wrong if a scavenge occurs in MKOBJ, as bp is now still pointing to the old
+            // a register (bp), then calls __MKEXTERNALADDRESS, then stores indirect bp.
+            // That is wrong if a scavenge occurs in __MKEXTERNALADDRESS, as bp is now still pointing to the old
             // object.
 #else
-            fp = __MKOBJ((INT)f);
+            fp = __MKEXTERNALADDRESS(f);
             __INST(handle) = fp;
             __STORE(self, fp);
 #endif
@@ -1652,11 +1652,11 @@
 !FileStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.137 2009-12-21 15:36:02 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.138 2010-02-01 18:19:02 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.137 2009-12-21 15:36:02 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.138 2010-02-01 18:19:02 stefan Exp $'
 ! !
 
 FileStream initialize!