You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
(27) |
Apr
(11) |
May
(112) |
Jun
(8) |
Jul
(10) |
Aug
(68) |
Sep
(12) |
Oct
(3) |
Nov
(19) |
Dec
(3) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(15) |
Mar
(20) |
Apr
(22) |
May
(131) |
Jun
(27) |
Jul
(19) |
Aug
(207) |
Sep
(61) |
Oct
(27) |
Nov
(28) |
Dec
(21) |
| 2004 |
Jan
(7) |
Feb
(25) |
Mar
(14) |
Apr
(55) |
May
(15) |
Jun
(2) |
Jul
(14) |
Aug
(28) |
Sep
(29) |
Oct
|
Nov
|
Dec
|
|
From: Tim R. <row...@us...> - 2003-05-09 01:07:19
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/vm/dsc In directory sc8-pr-cvs1:/tmp/cvs-serv6982/RiscOS/vm/dsc Modified Files: block,fff Log Message: Modified Files: RiscOS/plugins/FileCopyPlugin/sqRPCFileCopy.c comment change RiscOS/plugins/FilePlugin/sqRPCDirectory.c timezone/stamp calculation fixes RiscOS/plugins/SocketPlugin/sqRPCNetPlugin.c comment change RiscOS/plugins/SoundPlugin/sqRPCSound.c RiscOS/vm/fperrors.s remove dead code, 32bit fix RiscOS/vm/osExports.c RiscOS/vm/sqArgument.c new window label argument RiscOS/vm/sqPlatformSpecific.h RiscOS/vm/sqRPCClipboard.c clipboard works! RiscOS/vm/sqRPCEvents.c RiscOS/vm/sqRPCExternalPrims.c comment change RiscOS/vm/sqRPCFormPrint.c RiscOS/vm/sqRPCSyscall.c comment change RiscOS/vm/sqRPCWindows.c RiscOS/vm/dsc/block,fff add timezone related call Added Files: RiscOS/vm/sqRPCVersion.c use as a kind of vm compiletime timestamp ***** Bogus filespec: block,fff,1.1,1.2 |
|
From: Tim R. <row...@us...> - 2003-05-09 01:07:19
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/plugins/SocketPlugin In directory sc8-pr-cvs1:/tmp/cvs-serv6982/RiscOS/plugins/SocketPlugin Modified Files: sqRPCNetPlugin.c Log Message: Modified Files: RiscOS/plugins/FileCopyPlugin/sqRPCFileCopy.c comment change RiscOS/plugins/FilePlugin/sqRPCDirectory.c timezone/stamp calculation fixes RiscOS/plugins/SocketPlugin/sqRPCNetPlugin.c comment change RiscOS/plugins/SoundPlugin/sqRPCSound.c RiscOS/vm/fperrors.s remove dead code, 32bit fix RiscOS/vm/osExports.c RiscOS/vm/sqArgument.c new window label argument RiscOS/vm/sqPlatformSpecific.h RiscOS/vm/sqRPCClipboard.c clipboard works! RiscOS/vm/sqRPCEvents.c RiscOS/vm/sqRPCExternalPrims.c comment change RiscOS/vm/sqRPCFormPrint.c RiscOS/vm/sqRPCSyscall.c comment change RiscOS/vm/sqRPCWindows.c RiscOS/vm/dsc/block,fff add timezone related call Added Files: RiscOS/vm/sqRPCVersion.c use as a kind of vm compiletime timestamp Index: sqRPCNetPlugin.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/RiscOS/plugins/SocketPlugin/sqRPCNetPlugin.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sqRPCNetPlugin.c 24 Oct 2001 23:14:02 -0000 1.1.1.1 --- sqRPCNetPlugin.c 9 May 2003 01:07:16 -0000 1.2 *************** *** 1,3 **** ! /* Unix socket support. * * Author: Ian Piumarta (ian...@in...) --- 1,17 ---- ! /**************************************************************************/ ! /* A Squeak VM for Acorn RiscOS machines by Tim Rowledge */ ! /* ti...@su... & http://sumeru.stanford.edu/tim */ ! /* Known to work on RiscOS >3.7 for StrongARM RPCs and Iyonix, */ ! /* other machines not yet tested. */ ! /* sqRPCNetPlugin.c */ ! /* hook up to RiscOS socket stuff */ ! /**************************************************************************/ ! ! /* To recompile this reliably you will need */ ! /* OSLib - http://ro-oslib.sourceforge.net/ */ ! /* Castle/AcornC/C++, the Acorn TCPIPLib */ ! /* and a little luck */ ! ! /* Shamelessly copied from Unix socket support. * * Author: Ian Piumarta (ian...@in...) |
|
From: Tim R. <row...@us...> - 2003-05-09 01:07:19
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/plugins/FilePlugin In directory sc8-pr-cvs1:/tmp/cvs-serv6982/RiscOS/plugins/FilePlugin Modified Files: sqRPCDirectory.c Log Message: Modified Files: RiscOS/plugins/FileCopyPlugin/sqRPCFileCopy.c comment change RiscOS/plugins/FilePlugin/sqRPCDirectory.c timezone/stamp calculation fixes RiscOS/plugins/SocketPlugin/sqRPCNetPlugin.c comment change RiscOS/plugins/SoundPlugin/sqRPCSound.c RiscOS/vm/fperrors.s remove dead code, 32bit fix RiscOS/vm/osExports.c RiscOS/vm/sqArgument.c new window label argument RiscOS/vm/sqPlatformSpecific.h RiscOS/vm/sqRPCClipboard.c clipboard works! RiscOS/vm/sqRPCEvents.c RiscOS/vm/sqRPCExternalPrims.c comment change RiscOS/vm/sqRPCFormPrint.c RiscOS/vm/sqRPCSyscall.c comment change RiscOS/vm/sqRPCWindows.c RiscOS/vm/dsc/block,fff add timezone related call Added Files: RiscOS/vm/sqRPCVersion.c use as a kind of vm compiletime timestamp Index: sqRPCDirectory.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/RiscOS/plugins/FilePlugin/sqRPCDirectory.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sqRPCDirectory.c 14 Jan 2003 03:41:09 -0000 1.3 --- sqRPCDirectory.c 9 May 2003 01:07:16 -0000 1.4 *************** *** 2,10 **** /* A Squeak VM for Acorn RiscOS machines by Tim Rowledge */ /* ti...@su... & http://sumeru.stanford.edu/tim */ ! /* Known to work on RiscOS 3.7 for StrongARM RPCs, other machines */ ! /* not yet tested. */ ! /* sqRPCDirec.c */ ! /* Directory reading etc */ /**************************************************************************/ #include "oslib/os.h" #include "oslib/osbyte.h" --- 2,15 ---- /* A Squeak VM for Acorn RiscOS machines by Tim Rowledge */ /* ti...@su... & http://sumeru.stanford.edu/tim */ ! /* Known to work on RiscOS >3.7 for StrongARM RPCs and Iyonix, */ ! /* other machines not yet tested. */ ! /* sqRPCDirectory.c */ ! /* hook up to RiscOS directory listing etc */ /**************************************************************************/ + + /* To recompile this reliably you will need */ + /* OSLib - http://ro-oslib.sourceforge.net/ */ + /* Castle/AcornC/C++, the Acorn TCPIPLib */ + /* and a little luck */ #include "oslib/os.h" #include "oslib/osbyte.h" *************** *** 16,19 **** --- 21,25 ---- #include "oslib/ramfs.h" #include "oslib/cdfs.h" + #include "oslib/territory.h" #include "sq.h" #include <kernel.h> *************** *** 48,64 **** extern void sqStringFromFilename( int sqString, char*fileName, int sqSize); /*** Functions ***/ - int convertToSqueakTime(os_date_and_time fileTime); int convertToSqueakTime(os_date_and_time fileTime) { ! /* Squeak epoch is Jan 1, 1901, one year later than RiscOS one @ 1/1/1900. fileTime is stored as 5 bytes of the centiseconds since then ! Arithmetic on 5byte numbers is simpler to do in float.... */ ! float theTime; ! theTime = 0.0; ! theTime = theTime + (int)*(fileTime++)*0.01; ! theTime = theTime + (int)*(fileTime++)*2.560; ! theTime = theTime + (int)*(fileTime++)*655.360; ! theTime = theTime + (int)*(fileTime++)*167772.160; ! theTime = theTime + (int)*(fileTime++)*42949672.960; ! theTime = theTime - (365.0 * 24 * 60 * 60); ! return (int)(unsigned long)theTime ; } --- 54,85 ---- extern void sqStringFromFilename( int sqString, char*fileName, int sqSize); /*** Functions ***/ int convertToSqueakTime(os_date_and_time fileTime) { ! /* Squeak epoch is Jan 1, 1901, one year later than the RiscOS ! * one @ 1/1/1900. fileTime is stored as 5 bytes of the centiseconds ! * since then. Use territory call to get timezone & DST offset */ ! unsigned int high, low, tc; ! char tzname[50]; ! int tzoffset; ! low = *(unsigned int*)fileTime; ! high = *(unsigned int*)(fileTime+4); ! ! high = high & 0xff; /* clear all but bottom byte */ ! ! /* Firstly, subtract 365 * 24 *60 * 60 * 100 = 3153600000 = 0xBBF81E00 ! * centiseconds from the RISC OS time */ ! tc = 0xBBF81E00; ! /* now use the territory to find the timezone/dst offset */ ! xterritory_read_current_time_zone((char**)&tzname, &tzoffset); ! if (low < tc) /* check for a carry */ ! high--; ! low -= tc; ! ! /* Remove the centiseconds from the time. ! * 0x1000000000 / 100 = 42949672.96 */ ! low = (low / 100) + (high * 42949673U); ! low -= (high / 25); /* compensate for that 0.04 error. */ ! ! return (int)low + (tzoffset/100); } |
|
From: Tim R. <row...@us...> - 2003-05-09 01:07:19
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/plugins/FileCopyPlugin In directory sc8-pr-cvs1:/tmp/cvs-serv6982/RiscOS/plugins/FileCopyPlugin Modified Files: sqRPCFileCopy.c Log Message: Modified Files: RiscOS/plugins/FileCopyPlugin/sqRPCFileCopy.c comment change RiscOS/plugins/FilePlugin/sqRPCDirectory.c timezone/stamp calculation fixes RiscOS/plugins/SocketPlugin/sqRPCNetPlugin.c comment change RiscOS/plugins/SoundPlugin/sqRPCSound.c RiscOS/vm/fperrors.s remove dead code, 32bit fix RiscOS/vm/osExports.c RiscOS/vm/sqArgument.c new window label argument RiscOS/vm/sqPlatformSpecific.h RiscOS/vm/sqRPCClipboard.c clipboard works! RiscOS/vm/sqRPCEvents.c RiscOS/vm/sqRPCExternalPrims.c comment change RiscOS/vm/sqRPCFormPrint.c RiscOS/vm/sqRPCSyscall.c comment change RiscOS/vm/sqRPCWindows.c RiscOS/vm/dsc/block,fff add timezone related call Added Files: RiscOS/vm/sqRPCVersion.c use as a kind of vm compiletime timestamp Index: sqRPCFileCopy.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/RiscOS/plugins/FileCopyPlugin/sqRPCFileCopy.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** sqRPCFileCopy.c 23 Apr 2002 22:08:47 -0000 1.2 --- sqRPCFileCopy.c 9 May 2003 01:07:15 -0000 1.3 *************** *** 2,10 **** /* A Squeak VM for Acorn RiscOS machines by Tim Rowledge */ /* ti...@su... & http://sumeru.stanford.edu/tim */ ! /* Known to work on RiscOS 3.7 for StrongARM RPCs, other machines */ ! /* not yet tested. */ ! /* sqRPCfileCopy.c */ ! /* Copying files via OS calls */ /**************************************************************************/ #include "oslib/os.h" #include "oslib/osfile.h" --- 2,15 ---- /* A Squeak VM for Acorn RiscOS machines by Tim Rowledge */ /* ti...@su... & http://sumeru.stanford.edu/tim */ ! /* Known to work on RiscOS >3.7 for StrongARM RPCs and Iyonix, */ ! /* other machines not yet tested. */ ! /* sqRPCFileCopy.c */ ! /* hook up to RiscOS file copy to preserve filtypes etc */ /**************************************************************************/ + + /* To recompile this reliably you will need */ + /* OSLib - http://ro-oslib.sourceforge.net/ */ + /* Castle/AcornC/C++, the Acorn TCPIPLib */ + /* and a little luck */ #include "oslib/os.h" #include "oslib/osfile.h" |
|
From: Tim R. <row...@us...> - 2003-05-09 00:32:38
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/misc/ToCopy In directory sc8-pr-cvs1:/tmp/cvs-serv29215/ToCopy Modified Files: MakeFile,fe1 Added Files: each,ff8 Log Message: ***** Bogus filespec: each,ff8,NONE,1.1 ***** Bogus filespec: MakeFile,fe1,1.1,1.2 |
|
From: Tim R. <row...@us...> - 2003-05-09 00:32:38
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/misc/ToCopy/!Squeak/modules/TimerMod In directory sc8-pr-cvs1:/tmp/cvs-serv29215/ToCopy/!Squeak/modules/TimerMod Added Files: TimeX,feb TimerMod,ffa TimerModDc,fff Log Message: ***** Bogus filespec: TimeX,feb,NONE,1.1 ***** Bogus filespec: TimerMod,ffa,NONE,1.1 ***** Bogus filespec: TimerModDc,fff,NONE,1.1 |
|
From: Tim R. <row...@us...> - 2003-05-09 00:32:38
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/misc/ToCopy/!Squeak In directory sc8-pr-cvs1:/tmp/cvs-serv29215/ToCopy/!Squeak Modified Files: !run,feb Log Message: ***** Bogus filespec: !run,feb,1.2,1.3 |
|
From: Tim R. <row...@us...> - 2003-05-09 00:29:18
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/misc/ToCopy/!Squeak/modules/TimerMod In directory sc8-pr-cvs1:/tmp/cvs-serv28418/TimerMod Log Message: Directory /cvsroot/squeak/squeak/platforms/RiscOS/misc/ToCopy/!Squeak/modules/TimerMod added to the repository |
|
From: Tim R. <row...@us...> - 2003-05-09 00:28:41
|
Update of /cvsroot/squeak/squeak/platforms/RiscOS/misc/ToCopy/!Squeak/modules In directory sc8-pr-cvs1:/tmp/cvs-serv28252/modules Log Message: Directory /cvsroot/squeak/squeak/platforms/RiscOS/misc/ToCopy/!Squeak/modules added to the repository |
|
From: Tim R. <row...@us...> - 2003-05-07 23:49:57
|
Update of /cvsroot/squeak/squeak/platforms/Cross/vm
In directory sc8-pr-cvs1:/tmp/cvs-serv27169/platforms/Cross/vm
Modified Files:
sq.h
Log Message:
change browser plugin support; add null macros for most platforms and expect Mac platform specific file to override. See section labelled old browser plug-in support for specifics
Index: sq.h
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Cross/vm/sq.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** sq.h 6 Mar 2002 10:13:50 -0000 1.5
--- sq.h 7 May 2003 23:49:50 -0000 1.6
***************
*** 9,12 ****
--- 9,13 ----
* RCSID: $Id$
*
+ * 02/26/03 tim change browser plugin support code
* 01/28/02 Tim add macro default for sqFilenameFromStringOpen
* and sqFTruncate
***************
*** 340,344 ****
int clipboardWriteFromAt(int count, int byteArrayIndex, int startIndex);
! /* browser plug-in support */
void plugInForceTimeToReturn(void);
int plugInInit(char *imageName);
--- 341,346 ----
int clipboardWriteFromAt(int count, int byteArrayIndex, int startIndex);
! /* old browser plug-in support, maintained for a little while */
! #if 1
void plugInForceTimeToReturn(void);
int plugInInit(char *imageName);
***************
*** 347,350 ****
--- 349,362 ----
int plugInShutdown(void);
int plugInTimeToReturn(void);
+ #endif
+ /* macros to support Mac browser plugin needs without ugly
+ * code in Interpreter
+ */
+ #define insufficientMemorySpecifiedError() error("Insufficient memory for this image")
+ #define insufficientMemoryAvailableError() error("Failed to allocate memory for the heap")
+ #define unableToReadImageError() error("Read failed or premature end of image file")
+ #define browserPluginReturnIfNeeded()
+ #define browserPluginInitialiseIfNeeded()
+
/* interpreter entry points needed by compiled primitives */
|
|
From: Andreas R. <and...@us...> - 2003-04-26 17:44:32
|
Update of /cvsroot/squeak/squeak/platforms/win32/vm
In directory sc8-pr-cvs1:/tmp/cvs-serv30658
Modified Files:
sqWin32.h
Log Message:
update to 3.4.4
Index: sqWin32.h
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/win32/vm/sqWin32.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** sqWin32.h 8 Apr 2003 21:02:24 -0000 1.9
--- sqWin32.h 26 Apr 2003 17:44:28 -0000 1.10
***************
*** 241,245 ****
#endif
! #define SQUEAK_VM_VERSION TEXT("Squeak 3.4.3 / Tea 1.9 VM (release) from ") TEXT(__DATE__) \
TEXT("\n") TEXT("Compiler: ") TEXT(COMPILER) TEXT(VERSION)
--- 241,245 ----
#endif
! #define SQUEAK_VM_VERSION TEXT("Squeak 3.4.4 / Tea 1.9 VM (release) from ") TEXT(__DATE__) \
TEXT("\n") TEXT("Compiler: ") TEXT(COMPILER) TEXT(VERSION)
|
|
From: Andreas R. <and...@us...> - 2003-04-26 17:41:54
|
Update of /cvsroot/squeak/squeak/platforms/win32/vm
In directory sc8-pr-cvs1:/tmp/cvs-serv29754
Modified Files:
sqWin32DirectInput.c
Log Message:
fixed crash
Index: sqWin32DirectInput.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/win32/vm/sqWin32DirectInput.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sqWin32DirectInput.c 8 Apr 2003 20:59:48 -0000 1.1
--- sqWin32DirectInput.c 26 Apr 2003 17:41:50 -0000 1.2
***************
*** 41,52 ****
static int yData[BUFFER_SIZE];
static int stampData[BUFFER_SIZE];
IDirectInput *lpDI = NULL;
IDirectInputDevice *lpDev = NULL;
- HANDLE hMouseEvent = NULL;
#define ERROR_CHECK(hResult, errMsg) \
if(FAILED(hResult)) { \
! printf("%s (%s, %s)\n", errMsg, __FILE__, __LINE__); \
return hResult; \
}
--- 41,52 ----
static int yData[BUFFER_SIZE];
static int stampData[BUFFER_SIZE];
+ static int printDebugMessages = 0;
IDirectInput *lpDI = NULL;
IDirectInputDevice *lpDev = NULL;
#define ERROR_CHECK(hResult, errMsg) \
if(FAILED(hResult)) { \
! if(printDebugMessages) printf("%s (%s, %d)\n", errMsg, __FILE__, __LINE__); \
return hResult; \
}
***************
*** 74,89 ****
DISCL_NONEXCLUSIVE |
DISCL_BACKGROUND);
! ERROR_CHECK(hr, "Error setting cooperative mode");
!
! /* create the event to signal */
! hMouseEvent = CreateEvent( NULL, FALSE, FALSE, NULL );
! if(!hMouseEvent) {
! ERROR_CHECK(E_FAIL, "Error creating mouse event");
! }
- /* install it */
- hr = lpDev->lpVtbl->SetEventNotification(lpDev, hMouseEvent );
- ERROR_CHECK(hr, "Error setting event notification");
-
/* setup buffer size */
propWord.diph.dwSize = sizeof(DIPROPDWORD);
--- 74,79 ----
DISCL_NONEXCLUSIVE |
DISCL_BACKGROUND);
! ERROR_CHECK(hr, "Error setting cooperative level");
/* setup buffer size */
propWord.diph.dwSize = sizeof(DIPROPDWORD);
***************
*** 112,119 ****
lpDI->lpVtbl->Release(lpDI);
lpDI = NULL;
- }
- if(hMouseEvent != NULL) {
- CloseHandle( hMouseEvent );
- hMouseEvent = NULL;
}
return S_OK;
--- 102,105 ----
|
|
From: John M M. <jo...@us...> - 2003-04-21 19:35:01
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer In directory sc8-pr-cvs1:/tmp/cvs-serv12176/squeak/platforms/Mac OS/vm/Developer Added Files: NPSqueakStub.sit Log Message: 3.5.0 Squeak netscape plugin cfm to mach-o interface. Helps to debug apple project builder based netscape plugins when the caller (IE Internet exploder) wants to call a CFM plugin versus a mach-o. So we call thru to the mach-o bundle and debugging is then possible --- NEW FILE: NPSqueakStub.sit --- StuffIt (c)1997-2002 Aladdin Systems, Inc., http://www.aladdinsys.com/StuffIt/ 1»lA18&©<ùÕú0x륱\Hã=ª6BÁÔ¥Ê.ÆÄÂË´LiEªÂ7±¸õÛpÓG ßíª¬Ú[¿U¾85_häiÄÛ^ªßò4Ä`!Pz§DE-ì´ªUêRëFصZÇÔ VýÞÑu?QÖù5·erÞæXõû0qvh|çAÎÅñîsÎn§|mUÒa&¶WcC Jã¹÷úØréêm&ô|jÍ_`UÞ)8Ö;¸ÄÉ,5.ÿN^ '£½(êâ8n@ÂÏÄç:2¾±ºHCFé ²scÃ;Æ(D)]»~P¢·zU*Úc fFà+7îZd.$5ظ^BË#ÖZa`ÿxÂo".¶R°wÔרY å~$µ³È½ñ7ý¨îæ¦á2éqë¶ïxrâ=óYöjz³ÇÉ_Yxb§Â»ÕÆ{¯I_[È@ÍwâQ'Zô#w´aePk 4 p±¿+²É?`H¯U¡®&FêY#¼7ÓvΫT¥p¢Ì)8sÕ´ñüü¨JI02#EÜë±#*XhBÆâwLù¹`¥}Yªf8BñoÓÞæK±ÔqY¼I¨>®;*ðÜóõé8Úò¢ºrs Ôné~·gnÒé®|æ*¦¸o¯-ÝvðaÖf¤,òñÏ\áÆ¼f y¶{é15Eÿ.ä4ÈÄ|ÎV!kv¹Á<ê(Q4mbôjº¦ÿI¹ É7¡Y¸^q½ÕiI|²ç¯à$iqÛë¦k£üÇǯԴÜNEÅ~HX|'Å·Øh!³õuqÌÊ!ö ÙBOòº¥®î¯^!óì¬%~mþzU¥¯ÞC`geÉ,bãûí%³ÙÓúzUCvKX N!ìm$5!cY2Ý6§!GúÙªnASH®CÖ1F½Ú»¢¿¨OOd×fb!(W]4ÿöQxjP: Ð~XÎAÙß»*T®Í¼Þ§ÏC YmçSéPªÒïʧ59¼¾mÓÿ¶åº¨cêE´¥ädMK]Þ4³þ¸*Qñ*k[d¹ÍbCÅ<ÒZ¹û¤2Ç4Æë,îpQ&J¡Wîô´½2:ho9w,÷ïÄÀ÷ñ·ãHü¦ïö ÊÓÎ}XÄÿDÜß:)'¿Ü3ɵ:/*y O+×ÛÙU4| a=hW+5ôø4ÏÄʸªö1eÖP2ecôàî#òàaÜÝ-3jd×Q´i?ÑlP°/ü¥ùÎäOÑêaÑ(Xé¾ÏùÀÑì÷cj$c±ÐÃú·~LiìÊçþiü]80Þk$Xî8®ù+w,ý©Faò2÷×S+//YFBHV-¸JOè6âTÞ\áåA«FêM¨D~Í ry²éë¼vÌ®W¡éýaûÔ6yÆæÌá>õªÜnö_Îõ7 èTâ$¥é r)óù}Ú²Âb£I﹡Õ9,óxºdÔB¾Ydw8Âs{fOjZÐä>[BKW¤èP;¸ä©bSXAtÒ`¾7³z}Æ4YÒHA±îÜ|Ìf"ÌñwÁ·sÓêÏèçM»â[À)HÚýP«<r!²Ô#{\ÐYMçñ7Åð$-ÉÛ\]a;9¤~Zx°à÷}7N¾) ô§%NBÿ5ÞXÇ ÿË]¥íÔÄ8f&°¨Sï}t}>'#¤·ìùþáTeI^'Q>ÛÍvSS «ü;É<<jð(ÁíkóÂcëZ¹Ä- ASôw¾¼èFc#,«ºsOv©øÊ1sm Ûô¡1ßÔûÜÇ%¶¼=JAZn+2_NÁ<ï&\¦¿K©¦_ïÿº"çÄåVÿQ稪å\Káùüá«ÔjÿÇ$9B+ê º/s£hÖ¤Ú ÍlQçÀîø+¯=ݺÂDyc+b=TË(ÏÝ©f£¿^ÌݪР»h£sI#¦Ì²ÁÉ£d2#ª'¦$Á¬ Öè«:{+^% aü]sU8D¸°øÅkDɵAäFÓÊá<äÂ÷VÞ=>°r8ÇÐ5odüá¯Tª§à¥¥¥¥ i '0íQ®¯^í%à'_ÔÛÕb UZì{ï1ÅæÊDÇüÐû±ÌKlMàÛ]åÞì¨>þÅ£á½PW»3pá&WrN..Heù^¬@}û+ê7ÜUágå)ùðm¼uñ)±9Ù¼Lì5EÞç@"°hÏܵ#ñ þÚìêcÊÂÄ=í8ãã¡%æ?µ¢z²zLØl6ªæÀrNéD2ë.ÛÂ&ÒÔf)8ù¾¯½¼@5Èy É.bÍþÑp8dÐGÖ$W$ÖÛF4¦x¦úk¥ßQ³×-]wlÐ{Á.EbéEré R{*Á¦ifíÂæpñ¦¡T]ÓÇ0W3Ýmd øHöÅB$Ña9VõxÒ¡Fã×ZTÈÉ}>ÐÒ±Ce¯_ÉÇÒ%×ÀÅV»ÿÕ7¤è*9!ROh¸Qtìô ÞcÎe³±.ãø @¦ÌðXÿÔçPZÀ2 «~L[çÉ·ÂþOþ´Ã-âT 'µÃYk¥øCÿ©C¦Ecöaø&X£aWßÜQH\ÓÑ3õQ:=U;EâÛ¡_TÜÀH ®$Eì~ ¢<±Wì{ðêöqÚe»>RSþ¢¤ká6Z~ï*é¬?]jÄäñÊq&8hð82ÂXü³¼}J»K®w ÿiÆ)eá4ÝáÓÌeMÔLb-ÓàTp«éVÐQyæ"·è^YXY´CÕ³ä4ïk¼³ªÒæëPFÌ7°X® ·InFëää¾%âãrsWvÕ¡1Ò¥º zØ+ *þ9¤«QÂFøÂQÊx=yO|d=ÙàÎ d ÷öPiúL;Òt3Ëè\&P'¸¶Ç@Ö/á-¾uCÛ¡1Êΰ\]r×CHÉ óðBdü»7YMþð§îrä+á¿uj±ðÿN_Ôµcén[»%Xn¹=mÅí#ý-¬b6Nc¡yV¯fa¹æ°Öåµ%ÆJð MËmÃj0òQ5ö;áíyZ[æ]Ûp¢=º?&$¨ Zô¿¹×+¼¿ ÿC$-@×ÏéÖº* ñÅÝ$á1@6Ïõ$30ÄW @¢wëù>õêèbå KLfÜÑU,;T9Ó/*i±¥¢Á/ûs<dW:üÏÍÂ#ñ¥<Ë6°-Ð÷:ÅÓ2KYE§ÔÂø%`îÁe¨F¹g[in~4LWó~u>Ù¦[öÁ,+ÐÒ«(o¦1.îù -¿ÖÌÉiñ¹8Ó8He¯lÌKÑ 9±mãïe±oñH^Å S Ì!ñ³ëý§Þ:Þý¯þqÈÎ2³lf¬½¸r¹6ËAÏy`ýF½6Ð5«sý§KC*("¬ÌÜDRÁèa d3kÙ?éç{) b\' ½ÐWJÔRwÄ2e]dN]¬_°>Ñ_ï0fìæ8RÜúTh¥3ر´àWj¨ßõîXÆ!ã©é,²çÅgÜt[â%béÅvÏxke@lÓyt®çØ #2Æ8Êö~h·8¥åpC¼`F¼·´;Uån¦z.àY°òàŽ 'YDwÔìà}$²5Má¬ÜLP8íF¦¼ÿ8÷¾UÇ»²#G§cA]þf|×YjÆÖ¶íæÚÎ<0áLaNRϺ*ogj,íÔ tÊ»öÖºwù(y¾b¨úÁªéEÆÌ-¨ï+<¥§£o{ë²W¬'R%ª«T)°%Ǫ\p©ø)ÑtÝÝà£óâ Ã:ºö©ÝpN<áz¶ÇÒÊy-²CûqûgypSÕÒ8!ª<¬ë«#ÐÅqs,AÈÌtÜf¸Zh2¶z_%åYàéBǯå Ôz'"xû8[Þ¢|ëªMÇÊ1ÂrjÆåâEA26òªÓï±u¡ò¨iUÔT¢¡¦XóìoéNîé\9ÿæ&õüTxÛªo¼Ñwlv;"ç¾:·ÅùâW&B9L ÒµÂc°ÉdUµx!ûºWàõ©/4µ»M+2¨zôd)>rJapÓ²/ÕVÄÀ¶c6ÐnúÍFCËê:c ¾Ô¾¤l"öÀ*"¥¬õê[|¸b¦ØÖÖ¤tîwÒ"aíûF÷ûÅbC²rÒ Ù`÷7´¡säÀ¾ë9ÏUå¦`?Ñ6á+¶ë¯åg|zï'ÂB¾ h2ØþñÂ[¦ÂÚ}zÒá¡3]½R¢ì ÐÔÚ¬²Ì:v¯òiÂ&(»ã·e¸ÐþÂÒe6¼Mìêθ]1b_°Uàw Ýdª±±øNÚǤ#cÀóÓ!r?7êèÇ'ÀÏX¸üL |
|
From: John M M. <jo...@us...> - 2003-04-10 00:02:11
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer In directory sc8-pr-cvs1:/tmp/cvs-serv10370/squeak/platforms/Mac OS/vm/Developer Modified Files: SqueakVMForCarbon.pbproj.sit Log Message: 3.5.0b4 Index: SqueakVMForCarbon.pbproj.sit =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer/SqueakVMForCarbon.pbproj.sit,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 Binary files /tmp/cvsXBdrII and /tmp/cvsWzuS5g differ |
|
From: John M M. <jo...@us...> - 2003-04-10 00:02:05
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer
In directory sc8-pr-cvs1:/tmp/cvs-serv10227/squeak/platforms/Mac OS/vm/Developer
Modified Files:
SqueakPro5.xml
Log Message:
3.5.0b4
Index: SqueakPro5.xml
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer/SqueakPro5.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** SqueakPro5.xml 18 Nov 2002 19:14:38 -0000 1.5
--- SqueakPro5.xml 10 Apr 2003 00:01:59 -0000 1.6
***************
*** 572,578 ****
<SETTING><NAME>MWWarning_C_warn_possunwant</NAME><VALUE>1</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warn_unusedvar</NAME><VALUE>1</VALUE></SETTING>
! <SETTING><NAME>MWWarning_C_warn_unusedarg</NAME><VALUE>0</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warn_extracomma</NAME><VALUE>1</VALUE></SETTING>
! <SETTING><NAME>MWWarning_C_pedantic</NAME><VALUE>0</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warningerrors</NAME><VALUE>0</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warn_hidevirtual</NAME><VALUE>1</VALUE></SETTING>
--- 572,578 ----
<SETTING><NAME>MWWarning_C_warn_possunwant</NAME><VALUE>1</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warn_unusedvar</NAME><VALUE>1</VALUE></SETTING>
! <SETTING><NAME>MWWarning_C_warn_unusedarg</NAME><VALUE>1</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warn_extracomma</NAME><VALUE>1</VALUE></SETTING>
! <SETTING><NAME>MWWarning_C_pedantic</NAME><VALUE>1</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warningerrors</NAME><VALUE>0</VALUE></SETTING>
<SETTING><NAME>MWWarning_C_warn_hidevirtual</NAME><VALUE>1</VALUE></SETTING>
***************
*** 606,610 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 606,610 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 3506,3510 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 3506,3510 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 6415,6419 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 6415,6419 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 9372,9376 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 9372,9376 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 12125,12129 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 12125,12129 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 15082,15086 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 15082,15086 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 17853,17857 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 17853,17857 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 20612,20616 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE> §1</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 20612,20616 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>±</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
|
|
From: John M M. <jo...@us...> - 2003-04-10 00:01:42
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer In directory sc8-pr-cvs1:/tmp/cvs-serv10181/squeak/platforms/Mac OS/vm/Developer Modified Files: resources.sit Log Message: 3.5.0b4 Index: resources.sit =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer/resources.sit,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 Binary files /tmp/cvs0b1sGa and /tmp/cvsW83xPa differ |
|
From: John M M. <jo...@us...> - 2003-04-09 23:55:53
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation
In directory sc8-pr-cvs1:/tmp/cvs-serv8412/squeak/platforms/Mac OS/vm/Documentation
Modified Files:
readme
Log Message:
3.5.0b4 changes to change set names
Index: readme
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation/readme,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** readme 21 Dec 2002 06:46:36 -0000 1.5
--- readme 9 Apr 2003 23:55:50 -0000 1.6
***************
*** 9,12 ****
--- 9,13 ----
-- Changes John Mcintosh & Andrew C. Greenberg. Aug 6 & 7th, 2002
-- Changes John McIntosh Nov 14th, 2002 (some cleanup and modernization
+ -- CHanges John McIntosh April 5th, 2003 (changeset names change)
(Note to readers, it is possible a step was missed, so beware)
***************
*** 14,18 ****
Building a Carbon Squeak VM with ProjectBuilder:
! {JMM notes this is building with 10.2.2, and Squeak 3.4alpha (for croquet)}
Overview
--- 15,19 ----
Building a Carbon Squeak VM with ProjectBuilder:
! {JMM notes this is building with 10.2.4, and Squeak 3.5alpha (for croquet)}
Overview
***************
*** 68,74 ****
MoreInterpAccessors-JMM.2.cs
! Globalstructure-JMM.3.cs
CGeneratorEnhancements-ajh.1.cs
! Gnuifier.3.cs
B. DoIt: VMMakerTool openInWorld
--- 69,75 ----
MoreInterpAccessors-JMM.2.cs
! VMGlobalsChanges.5.cs
CGeneratorEnhancements-ajh.1.cs
! Gnuifier.4.cs
B. DoIt: VMMakerTool openInWorld
***************
*** 94,98 ****
Step Four: Get, and install, the Gnifier, and gnuify the interpreter
! A. See the Gnuifier.3.cs changeset in the specialChangeSetsFolder
B. DoIt: (Gnuifier on: pathToInterpreterfile) gnuify, in my case:
--- 95,99 ----
Step Four: Get, and install, the Gnifier, and gnuify the interpreter
! A. See the Gnuifier.4.cs changeset in the specialChangeSetsFolder
B. DoIt: (Gnuifier on: pathToInterpreterfile) gnuify, in my case:
|
|
From: John M M. <jo...@us...> - 2003-04-09 23:52:49
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation
In directory sc8-pr-cvs1:/tmp/cvs-serv7616/squeak/platforms/Mac OS/vm/Documentation
Added Files:
3.5.0 Release Notes.rtf
Log Message:
3.5.0b4 Notes
--- NEW FILE: 3.5.0 Release Notes.rtf ---
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fnil\fcharset77 Geneva;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 LucidaGrande;
}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww17300\viewh12720\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 Mac VM 3.5.0 mach-o build for Carbon, and build for Classic. Support for Croquet, and support for Safari\
Feb 14th, 2003 (3.5.0b3)\
Still yet to do, in future versions.\
Verify that file delete rename etc works on aliases, not the targets. (Yawn, someday)\
Pre OS-X users should read about OS-9 packages in the 3.2.4 change notes.\
\
Notes About previous VM.\
3.2.6 VM classic have an issue when the tickcount clock goes over 0x7FFFFFFF, about 24 days. \
This exhibits it self as Squeak won't accept user input, or allow you to switch under os 9 or earlier.\
Starting a Squeak image hangs durning the screen painting.\
Restarting the mac solved these problems. Force quit does not.\
This is fixed in 3.2.7b3\
Some issues with alias files and folder were fixed in 3.2.7b6 and 3.2.8b3\
3.4.0b2 seems a fine VM, from what people tell me, but now we've 3.5.0...\
\
3.5.0b4 \
a) os-x exposed an issue with EToyPeerToPeer support. It seems under os-x we get the connect, data, close so fast on lans that by the \
time we get around to asking for the remote IP address the connection is closed, and our open transport call fails. We change SqMacNetwork.c to \
return the IP address discovered at connect time in this case. Under os-9 we never saw this behavior because we suspect the network activity \
was slower and more serialized. \
\
3.5.0b3 (Safari support)\
\
a) The plugin logic was changed to support Safari and better support os-x. This required building a CFM stub to load the mach-o compiled\
NSPLugin. The mach-o plugin now uses a pthread for the interp.c loop. This gives much better performance and user UI feedback. \
b) The GC logic was carefully reworked to optimize the assembler on the ppc. This gave us upwards of a 30-50% improvement, since \
incremental GC is going on all the time, this change actually has a effect you can see say in the solitaire example where we save 10%. \
c) sqMacNetwork.c was modified, first change in many years. The remote address and port number are requested as an async operation. \
The operation times out after a few milliseconds. This was never a problem in os-9. Now it seems there is an issue sometimes for DHCP clients\
on os-x. There the operation can timeout and return 0 as the address or port. We changed the call to do a sync operation to avoid a timeout.\
d) sqMacMain.c was modified to allow for pthreads for mach-o netscape based squeakland plugin support\
e) sqMacMemory.c changes for mach-o plugin support\
f) sqMacTime.c changes for mach-o plugin support\
g) sqMacUIEvents.c changes for mach-o plugin support\
h) sqMacWindow.c changes for mach-o plugin support \
i) npmac.cpp now this is a netscape glue routine, I changed it to ensure we can see the entry points, originally they are C++, but need \
to be "C" so the loader can find the names the CFM glue routine is looking for. Also we add the logic TV2FP to setup the mach-0 to CFM code stubs to allow the mach-o plugin to callback to the CFM stubs in Safari. \
j) sqMacNSPlugin.c \
1) Rearrange when the interpret() thread is started to ensure a race condition doesn't happen.\
2) use Pthreads for the mach-o osx version. \
3) rework NPP_SetWindow to start interpret() when needed. \
4) Alter StartDraw, EndDraw to use a mutex lock and handle os-x port locking to prevent races between pthreads.\
5) Alter ioShowDisplay, optimization and handle os-x\
6) fix ioSetFullScreen to make it work on Safari\
7) fix OpenFileReadOnly to make it work on os-x, needed sqFileNameFromStringOpen macro call\
8) Alter ExitCleanup to mutex lock to prevent race ending issues, and add a bit more cleanup\
\
\
\
Note some versions of 3.4.1 were distributed for testing only, these are superseded by 3.5.0\
\
3.4.0b2 (Croquet support)\
\
a) Ensure vmVersion information reports correct information, was bogus in 3.4.0b1\
\
3.4.0b1 (Croquet support)\
a) Added plugin BMPReadWriterPlugin 14 November 2002 (i)\
b) B3DAcceleratorPlugin.c gets primitiveCreateRendererFlags (new api)\
c) two more op codes get added to BitBltPlugin (fixAlphawith, pixClearwith)\
d) Squeak3D gets (b3dOrthoNormInverseMatrix, b3dTransformDirection,b3dTransformPoint,b3dTransposeMatrix)\
e) The scroll wheel mouse logic was using apple cmd key as the modifier on the arrow key events, Other platforms use the Control key. So the \
mac falls in line (changed to use the control-key)\
\
3.2.8b9\
a) recompiled os-x version, 3.2.8b8 seem to have a bad compiler option and gave 20% less performance.\
\
3.2.8b8\
a) exposed
\f1 vmParameter
\f0 24 & 25 which control how memory is allocated/freed \
\f1 Smalltalk vmParameterAt: 24 put: 48*1024*1024.\
Smalltalk vmParameterAt: 25 put: 24*1024*1024.\
\f0 b) Added argv,argc, env variables to main\
c) Fixed for Jaguar 10.2. Full screen mode cmd-tab broke menu bar hiding, this is a 10.2 bug\
d) Added support for IP_ADD/DROPMEMBERSHIP and the ability to bind to the wild card port (0).\
e) OpenGL changes for TEA\
\
3.2.8b7 was testing release and not distributed to the public.\
3.2.8b6 was testing release and not distributed to the public.\
3.2.8b5\
a) Oops broke the logic returning the vmversion information in classic. Also incremented os-x version (which was fine) to keep numbers in sync\
\
3.2.8b3 The squeak.sourceforge.net CVS tree was reorganized and the project builder project revamped. The \
major change to the source was upgrading the netscape browser plugin to 3.2.7b6 levels.\
\
a) Gnunifer.3.cs Changed to add register var on FOO_REG and to remove sqGnu.h file embedded in method.\
b) sqMacDirectory.c Add logic to handle case of building as CFM carbon plugin under CW6, needed some carbon calls\
c) osExports.c needed to ifdef out the getUIToLock entry point (not available as CFM carbon browser plugin)\
d) sqMacFileLogic.c Fix alias problem. Add logic to deal with path names as CFM carbon browser plugin, ensure vmPath is correct.\
e) sqMacImageIO.c Cast to get rid of warning message\
f) sqMacMain.c Cast to get rid of warning message, Check for CFM Carbon and bundle check. Revise vm parm 1201 code to return long file names are ok as CFM carbon browser plugin. Some diagnostic routines for printing to the console as CFM carbon browser plugin.\
g) sqMacMemory.c Logic change as CFM carbon browser plugin.\
h) sqNSPlugin.c Fix to beginFullScreen logic (carbon call is broken?)\
i) sqMacUIEvents.c Remove getUIToLock dummy call. This entry point should only exist for mach-o carbon builds. Not CFM carbon browser plugins\
j) sqMacWindow.c Use old call to create window when a CW 5 carbon application.\
k) sqPlatformSpecific.h Change #ifdef to correct logic error when building as CFM carbon browser plugin under CW 5.\
\
\
\
May 31st, 2002 (3.2.7b6)\
For 3.2.7\
\
3.2.7b3 We build the VM using patchs to enable globals as a structure. This improves performance by 10%\
\
a) Classic Vm builders might need to add "struct foo *foo = &fum; " to int interpret(void). \
b) readme: add notes about changesets and alter build instructions\
c) sqMacFileLogic.c: use accessors for interp.c globals\
d) sqMacMain.c: use accessors for interp.c globals. Also Alain Fischer added logic to fetch os-x version number and to enable you to put squeak.image in the resource folder for autostarting.\
e) sqMacTime.h: Fix busted lowresclock again. After 24 days of mac uptime, 3.2.6 squeak will hang.\
f) sqMacUIEvents.h: use accessors for interp.c globals.\
g) sqPlatformSpecific.h: alter sqFTruncate to use fileno() as needed.\
h) sqMacWindow.c: use accessors for interp.c globals.\
i) 3.2.7b5 sqMacFileLogic.c: change vmpath to resolve to classic VM if vm is moved from MacOSClassic folder\
j) Misc changes for Netscape plugin support\
k) Introduce osExports.c logic\
l) 3.2.7b6 Fixed a problem in path name resolving need to use UTF8 to properly interact with high ascii characters\
m) 3.2.7b6 Fixed a problem in path name resolving there was a bug with certain types of alias path name combinations in quick name resolving.\
\
Mac VM 3.2.6 mach-o build for Carbon, and build for Classic.\
March 14th, 2002\
Still yet to do, in future versions.\
Verify that file delete rename etc works on aliases, not the targets.\
\
You will need mach-o os-x bundle plugins to work with this VM. example ->
\f2 mpeg3Plugin.bundle.\
Old carbon non-bundled plugins will not work, but keep reading to understand where classic \
plugins still are needed.\
\f0 \
Pre OS-X users should read about OS-9 packages in the 3.2.4 change notes.\
Notes About previous VM.\
3.2.6b6 Classic or earlier has a bug that makes it stop collecting user input on a 19.88 hour cycle depending on reboot time.\
Seems many systems don't run for more than 19 hours so we've not had major complains about this issue. \
Bug was introduced in 3.2.1.\
3.2.5 has a bug that prevents the use of accented characters without \
a image patch to fix a VM issue (not an issue in 3.2.4). Also you can't enter an double keystroke characters, ie ^ \
which makes life difficult. It also does not support the AppleScript Plugin (not an issue in 3.2.4)\
3.2.4 a bug in project builder introduced a performance problem (bad compiler options).\
\
See the 3.2.5 about why this 3.2.6 is different inside.\
\
For 3.2.6:\
a) Change an internal number that dictates how often pending interrupts should be looked at from 5ms to 3ms This improves \
delay accuracy.\
b) Change how sleeping is done when squeak is idle. This reduces CPU consumption, and improves Delay accuracy.\
c) Fix bug with high bit problem with keyboard (accented characters are ok now)\
c2) 3.2.6b6 has fixed characters that require multiple key strokes to enter.\
d) Externals that make UI interactions (IE AppleScript) Must now make a call back to the VM to schedule\
the main thread to do the call that will invoke UI interaction to prevent a deadlock in Carbon between threads. \
See the OSAExecute call in the AppleScript plugin for details.\
e) If you run a classic mac VM more than 23.x days nonstop it will stop responding to UI events. Ensure clocks get anded with 536870911.\
f) signal inputSemaphoreIndex because we are mulithreaded. Not that it does anything for us yet...\
g) 3.2.6b6 Pass the unicode value of the keystroke up as the EventKeyDown/EventKeyUp data, versus mackeyboard code.\
h) Somewhere there is a bug with mktime + time, so use the unix code of time+localtime+gmt \
i) Change iorelinquishPrcessorForMicroseconds to sleep the quatum between now and wakeup time. Also schedule a\
check for interrupts if wakeup time is now or in the past. This improves delay accuracy. For OS-x this was a big deal,\
for os-9 it improves things by 1 or 2ms. Also in os-x we sleep more when idle so CPU usage goes down.\
j) On OS-9 umap AND free the VM backing store. Just doing the free doesn't work and you lose 128Mb of disk space until you reboot\
k) 3.2.6b7 for post event processing ignore mouse move/drag/or scroll wheel events. These are ignored by the open/gl plugin and only suck a major amount of CPU time to process in the post event processing logic. \
l) 3.2.6b8 (3.2.6b4 classic) removed call to uncouple shift keys introduced in 3.2.1. This causes some macs after sleeping not to respond to keyboard input\
m) 3.2.6b8 (3.2.5b7 classic) added function for ioLowResMSecs to avoid early bit overflow. Rework clock checking in ioHandleEvents to handle clock rollovers properly.\
\
Mac VM 3.2.5 mach-o build for Carbon, and build for Classic.\
March 4th, 2002\
Still yet to do, in future versions.\
Verify that file delete rename etc works on aliases, not the targets.\
\
You will need mach-o os-x bundle plugins to work with this VM. example ->
\f2 mpeg3Plugin.bundle.\
Old carbon non-bundled plugins will not work, but keep reading to understand where classic \
plugins still are needed.\
\f0 \
Pre OS-X users should read about OS-9 packages in the 3.2.4 change notes.\
\
Beware this version of the VM is significantly different inside! \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1 \cf0 a) Broke sqMacWindow.c into 10 different files by function type.\
\
b) Moved most of the memory allocation logic out of sqMacMain.c into sqMacMemory.c. and ensure memory is freed when Squeak is terminated. \
The major change in this code is support for OS 9.x virtual memory mapping. This only applies to Mac OS 9.2.0 or higher, excluding os-x. It appears Mac OS 9.1 has a bug that prevents this feature from working.\
\
For images that require less than 128MB of memory, mapping is used to allow the image to grow/shrink to the 128MB boundary, therefore you can change the application memory size to about 2MB. \
\
For images that require more than 128MB then change the application memory size to > 128MB and mapping will not occur. \
\
If mapping is not available because virtual memory is turned off or the api is not supported by the macintosh OS then mapping is not used. Note that mapping is not support under the classic os-9.x environment under OS-X, however in this case you should be using the OS-X version of Squeak, not the classic version.\
\
c) Use of Carbon event logic for OS-X only. This is a major structural change. \
\
It also encouraged the use of a pthread for interp.c. \
\
All user interaction with the VM follows a new code path, so problems with keyboard or mouse input should be reported asap. Also any issues with application switching, windows being brought to the foreground or sent to the background and usage of the full screen logic should be reported asap.\
\
As part of this change I have build in support for scroll-wheeled multi-button mice under os-x. Thanks to Doug Way for testing this for me. Maybe someone can post to the list what their favorite 3 button scroll wheeled mouse/trackball is.\
\
d) Use of a carbon call to get the dominate Device if you have multiple screens. People with multiple screens should confirm window resizing, full screen on/off works as expected.\
\
e) Corrected comment in sqMacFileLogic.c\
\
f) Changes to sqMacNSPlugin.c. This makes it compile, but it's not usable yet.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0 \cf0 \
\
Feb 20th 2002 3.2.4\
\
For this version of the VM I have migrated towards using OS-9 packages. This allows us to provide one \
folder/package that supports os-x and previous operating system versions.\
\
Given Squeak 3.2.4Beta1.app\
The classic VM is found in the *.app:Contents:MacOSClassic, with an alias in *.app:\
The mach-o OS-X VM is found in *.app.Contents:MacOS\
\
If you are running OS-9 then clicking on the *.app or doing drag and drop will just run Squeak, same applies for OS-X.\
If you are running OS-7.5.5 or OS-8.x then the *.app package will appear as a folder, just open and click on the alias within. \
Note that if you want to use classic plugins I suspect you need to put them in the MacOSClassic Folder beside the VM. \
Bundles for os-x go in the same location as the *.app application package.\
\
Changes\
a) Drag and drop at open time with image file that has no meta type, will now open the image, versus prompting you.\
b) Use an os-x window attribute at open time to signal that the window should not be moved by the dock when you go to full screen.\
c) Fix window update logic to use window that needs updating versus stwindowg to fix issues with print dialog windows in classic. \
d) bitblt gets recompile to pickup fixes posted in 3.2 update stream.\
\
Feb 5th 2002 3.2.3\
Changes\
\
a) use old extended time manger to update psudeo-TickCount, versus sigalrm. siglarm make sound recording not work.\
b) fiddle with sound recording and make it work.\
\
Jan 2002 3.2.2\
Changes:\
\
a) AsyncFilePlugin.c Use global to remember security function entry point for performance reasons\
b) FilePlugin.c Use global to remember security function entry point for performance reasons\
c) interp.c Use squeakFileOffsetType versus off_t and add a bunch of checks to handle lack of long long and conversion errors between 64/32 bit integers and LargeInteger objects\
d) readme, it's http://www.mucow.com/Gnuifier.1.cs \
e) SocketPlugin.c Use global to remember security function entry point for performance reasons\
f) sq.h added default sqFilenameFromStringOpen and sqTruncate\
g) sqFilePluginBasicPrims.c revert to anti specs, but ensure #def to fseeko and ftello for 64 bit aware file systems.\
h) sqMacDirectory.c A bit more error checking on bad file names\
i) sqMacFileLogic.c Folders size is now zero in classic, and a bit more checking on bad file names\
j) sqMacSound.c Fixed a problem with sound recording in classic due to a change made in Sept. But sound recording still does not work under os-x\
k) sqMacWindow.c two very important changes:\
\
1) You can now do FFI calls with the FFI bundle plugin to Mach-o frameworks. \
However you need to rework your api calls. For example:\
apiGetMousePoint: aMacPoint was\
<apicall: void 'GetMouse' (MacPoint*) module:'InterfaceLib'>\
It now is:\
<apicall: void 'GetMouse' (MacPoint*) module:'Carbon.framework'>\
\
If you review /System/Library/Frameworks I'm sure you can come up with interesting ways to \
make mac only squeak images.\
\
I now use map( NULL, gMaxHeapSize, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED,-1,0);\
anonymous memory mapping to 512MB as the squeak memory block. The VM can then grow or shrink\
within the 512MB block, I just move a pointer. \
\
Note in 3.2.1 a slight error on my part restricted Squeak to 50MB. I am of course\
interested to hear about issues with my choice of 512MB. Note a Squeak VM is limited to 2GB under perfect \
conditions, however if any part of the image crosses the 2GB boundary the VM will fail, right now 512MB\
seemed a safe choice.\
\
PhysMem: 60.2M wired, 78.6M active, 412M inactive, 551M used, 217M free\
VM: 3.03G + 55.3M 7847(0) pageins, 1(0) pageouts \
PID COMMAND %CPU TIME #TH #PRTS #DREGS RPRVT RSHRD RSIZE VSIZE\
422 Squeak VM 0.8% 0:35.59 2 71 100 23.3M 8.53M 26.5M 571M\
\
but I only have one 80,000,000 byte swap file in /var/vm\
\
Note if you turn crash reporter on, then if the VM crashes a nice report should be generated in your log directory. See the Apple documentation for a description of this feature, currently it is set in OS-X 10.1.x via the preferences window for the Console Application. If you have a crash with this VM, please recreate and post the crash log (found in Users/foobar/Library/Logs/ to the Squeak mailing list so we can continue to make the VM fault tolerant.\
\
3.2.1 Notes\
\
You might need these change sets to build a new VM or to use all the features of this VM with your image, hopefully these will get into the pending 3.2.x image.\
\
Fixes and feature extensions.\
AsyncFileFixFu...hName-JMM.1.cs fix for async test method.\
DragAndDropAtStart-JMM.5.cs fix to enable drag and drop at startup\
\
Needed to compile a VM with VMMaker\
LargeFiles-JMM.3.cs Enable large file support, files > 2GB\
\
Needed to turn this feature on\
MacLongFileName-JMM.5.cs Enable long file names on the mac\
\
The SUnit\
MacLongFileNamesSUnits-JMM.3.cs Test long file names and long directory names and large file support\
\
Kinda optional features some people might need.\
InternetConfiguration-JMM.5.cs Allow internet configuration information access, internal plugin\
UUID-JMM.3.cs Allow UUID generation, internal plugin\
\
a) The ability to get back a UUID. This uses the hosting UUID generator if the\
hosting OS supports it and we have a primitive we can call. If not then we generate\
a type 4 version of a UUID (the random bits one).\
(This requires a special change set)\
\
b) Ability to start squeak on the mac by dragging multiple documents onto the\
image, or drag and drop of stuff onto the running VM icon.\
(This requires a special change set)\
\
c) Usage of the Internet Configuration tool kit to supply information about\
what the mac proxy is etc. etc.\
(This requires a special change set)\
\
d) Migrate file system to use 64 bits. This allows you to read/write and seek\
with files > 2 GB. This includes a change to the VM to convert from/to long\
long integers. It also allows the file system to actually deal with 2GB files,\
the current file interface actually fails once the file exceeds 1GB.\
\
e) For the carbon based Squeak VM we now support long file names 255\
characters. Close both eyes and touch everywhere the mac VM deals with file\
name paths and hope for the best (Actually we write an Sunit to ensure we've\
not broken everything). This also includes the ability to put an image in a\
long file name directory, but right now the image name must stay under 32 characters.\
\
FilePlugin.c changes to support large integers.\
FilePlugin.h changes\
sq.h changes to support large files.\
sqConfig.h changes to resolve some conflicts.\
sqFilePluginBasicPrims.c changes to support large files.\
sqMacAsyncFilePrims.c changes to use fspec versus 255 file path.\
sqMacDirectory.c changes to use hosting OS (OS-X) bsd create and delete directory\
and truncate. dir_look changes as part of the general rewrite.\
sqMacDragAndDrop.c use new call to get path name from fsspec. Use fsspec more, and added \
interface code to setup drag and drop of items at application startup time. max document name\
goes to 1000 characters.\
sqMacFileLogic.c Mostly rewrote!\
sqMacSecurity.c use new file calls.\
sqMacWindow.c \
increase size of vmpath, docpath, imagepath to 1000 chars, shortname to 255 characters.\
add logic for left/right modifier keys \
reworked LoadLibViaPath logic \
sqImageFileOpen uses fsspec versus 255 path name.\
sqImageFileStartLocation uses ffspec.\
bundle support for bundles\
\
e2) interp.c supports get/put of large integers to long long integers.\
e3) fixed fTruncate\
\
Hint getting this to work was a pain. Think of 255 character folder names and nested aliases,\
folder 1 refers to folder 2 which then refers to folder 1 again, just go down the path say 8 times,\
then ask to create a file or directory!\
\
f) Support to change the Mac screen resolution under Squeak control.\
\
g) Fix to unload/load the scrap at startup time to ensure the clipboard is\
correct when starting up the VM.\
\
h) Uncouple the shift key and left/right shift keys on old extended keyboard.\
Also add a call to get which keys are currently pressed on a USB keyboard or\
the USB codes for an apple non-usb keyboard. (Note this isn't working quite yet under OS-X)\
\
i) Changes to enable us to compile the VM under Apple's OS-X Project Builder\
environments.\
\
j) Some rewriting to ensure serial and midi support can be written as external\
plugins.\
\
k) Fiddling to get sound input to work under OS-X\
\
l) Platform.exports changed macintosh to macintoshSqueak to avoid conflict.\
\
m) Memory is allocated at 50MB at start, then will grow or shrink, verus previous carbon apps\
that did 1GB. \
\
n) sqPlatformSpecific.h changes to support long file names and os-x posix file names\
\
o) sqVirtualmachine.c & sqVirtualmachine.h\
#if VM_PROXY_MINOR > 4\
VM->positive64BitIntegerFor = positive64BitIntegerFor;\
VM->positive64BitValueOf = positive64BitValueOf;\
VM->signed64BitIntegerFor = signed64BitIntegerFor;\
VM->signed64BitValueOf = signed64BitValueOf;\
#endif\
\
Beware this causes an interesting problem, if you compile plugins with VM_PROXY_MINOR now set to 5, then they will not work with older VMs. The solution is to define the VM_PROXY_MINOR in the plugin to the value that indicates what features it is using.\
\
p) Changed to use ITimer logic as a 16ms lowres timer to improve performance\
\
q) Changed to use single thread, no thread manager.\
\
r) Changed to use lowres timer in checking for polling time to improve performance\
\
s) It should have faster startup times.\
\
t) It will hide the empty window at startup, then show the squeak window when required.\
\
u) It has a different menu structure.\
\
v) It does less I/O when navigating directories.\
\
The macintosh 3.1Alpha1MT VM, Sept 24th 2001 \
This VM was built with the base 3.1 image at change set #4347\
V3.1.1 at change set #4347\
\
\
We go to V3.1.1 to indicate that the 3.1 VM is being used. In the past the 3.1 Image was used but some changes in the openGL logic makes 3.1 Vm and 3.0 image not quite work correctly with 3d graphics. Although a 3.1 VM will run many images way back to the 2x series no careful study has been done on the ability to do this. So at this point we are indicating this VM is a 3.1 VM and best used with a 3.1 image.\
\
Use of VMMaker to build VM. As of this version everything can be built as an external except for the window logic which hasn't been decoupled from the VM support for the macintosh. \
\
1) AsynchFilePlugin the security check for ability to create file is now a plugin call.\
2) B2DPlugin logic changes to fillLinearGradientfromtoat\
3) b3dRemapFaces, b3dRemapEdges, b3dRemapEdgeList, b3dRemapAET, b3dRemapEdgeVertices, b3dRemapFaceVertices, b3dRemapFaceFree, b3dRemapEdgeFree, b3dRemapAttributes. Some casting and changing of += to = + to make some compilers happy.\
4) BitBltPlugin added tableLookupat call.\
5) DropPlugin added setFileAccessCallback to allow the Security Module plugin the ability to give us the entry point to turn security off so we can open files as read only when security is turned on. This was broken in the past. \
6) FilePlugin added fileOpennamesizewrite,getThisSession to allow for callbacks. Changed the file security logic to use the plugin interface. \
7) interp.c, fixes for 4347ByteArrayRangeCheck-di, ability to printAllStacks, security calls for image rename, write to use plugin interface.\
8) Added GetAttributeString, and recordDragDropEvent and entry points for callbacks.\
9) SecurityPlugin changed when initialization is called to initialize the safe and unsafe directorys, also added entry points for all the testing calls so it can be a true plugin.\
10) Serialplugin. The serial plugin was redesigned to seperate out MIDI logic. People with MIDI devices and old serial macintosh should check to see if they still work since we lack equipment now to test this obsolete technology set.\
11) SocketPlugin. Make security calls true plugin calls.\
12 SoundGenerationPlugin. Removed \
EXPORT(int) SoundGenerationPlugin_primitiveFMSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitiveOldSampledSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitivePluckedSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitiveSampledSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitiveWaveTableSoundMix(void);\
They were a hack at the plugin level and discussion on the list seemed to show they were no longer used. \
13) Checking for if defined (__APPLE__) && defined(__MACH__) for the Mac OS-X native development environment\
14) Changed sqMacAsyncFilePrims, usage of interpreterProxy->, plugin calls for getThisSession. \
15) Changed sqMacDirectory.c. Removed some utility code and make it a seperate file so that it can be shared between sqMacWindow and other plugins that require them. \
16) Changed sqMacDragDrop.c. Added plugin callback for getSTWindow, the sqSetFileAccessCallback logic, fileOpennamesizewrite, and secHasFileAccess. Added logic to do the recordDragDropEvent callback to sqMacWindow.c \
17) sqMacNetwork.c. Some cleanup for the OS-X version of the OpenTransport headers, some constants have name changes\
18) sqMacNSPlugin.c Use of ioLoadFunctionFrom(NULL, "DropPlugin"); versus explicit call.\
19) sqMacOpenGL.c. Some cleanup for the OS-X version of the OpenGL headers\
20) sqMacOpenGLInfo.c. Some cleanup for the OS-X version of the OpenGL headers\
21) sqMacSecurity.c ioInitSecurity calls back to dragAndDrop plugin to set entry point to turn security off. Added code to create directories if required and ensured callbacks are plugitized.\
22) sqMacSound.c Some cleanup for the OS-X version of the Sound headers. Use of interpreterProxy-> in the proper places.\
23) sqMacWindow.c Some cleanup for the OS-X version of the compiler. Fixed saveAsEmbeddedImage, this got broken when we moved from a FAT to a ppc only application. Altered interface to recordDragDropEvent so that it was plugable. Some file path name logic goes to a seperate C source file. The drag and drop plugin is loaded and intialized after the image is loaded but before the interpreter is started, before it was done a bit earlier in the startup process. This also has the effect of initializing the security module.\
24)sqOpenGLRenderer.c. Some cleanup for the OS-X version of the OpenGL headers\
25)SurfacePlugin.c gets a hack so it knows when it is internal versus external.\
\
\
\
v3.0.18 at change set #4081\
(Note browser plugin goes to 3.0.23\
\
1) sqMacOpenGL.c Quite a few changes were made to the code to support it as an internal plugin for the browser. This is because the drawable frame for a browser plugin is a subset of the browser's grafport, so lots more care must be taken to draw in the correct location using OpenGL. We also fixed issues with re-configurating the Open/GL draw area when the window gets resized or goes to full screen, and attempted to ensure multiple screens will work.\
\
2) sqMacWindow.c, minor fix to cast a constant char * to char * for CW 6.1\
\
\
Browser plugin 3.0.23 fixes\
\
1) Integerated the H/W Acceleration as an builtin plugin\
2) Added logic for pre and post event interaction to browser plugin event handler for H/W Acceleration logic. The external H/W Acceleration plugin mostly works with the browser plugin but doesn't work with full screen mode, or if the plugin is embedded in a window or a scrollable frame, so don't use it. Use the browser plugin 3.0.23 or higher which has the H/W Acceleration builtin.\
\
v3.0.17 at change set #4081\
(Note browser plugin goes to 3.0.21)\
\
1) Added HW acceleration as internal plugin.\
2) 4079BBAlphaTextFix-ar Fixes the problem with alpha text, changes BitBltPlugin.c \
3) Added primitive on the mac to truncate a file.\
4) Added logic to flush volume on a flush file to ensure file and control blocks are flushed.\
5) For the Carbon VM we increase nextevent wait time if we get sufficent idle time. This should reduce CPU usage under OS-X\
6) GetAttribute: 1002 now returns the gestaltSystemVersion as a hex string, and getAttribute: 1003 now returns either '68K' or 'PowerPC'.\
7) Starting with 3.0.17 the VM is build only as a powerpc application. The latest VM as a 68K application will be made available from time to time permits based on people's needs. \
8) Changes to sqOpenGLRenderer.c to improve performance, OpenGL 1.1 support.\
\
Plugin 3.0.21 fixes\
\
1) added check for mailto: tag on posts to fix problem with Netscape crashing, and IE hanging.\
2) Plus above fixes.\
\
What has been fixed/changed.\
v3.0.16 at change set #4041\
(Note browser plugin goes to 3.0.20)\
\
1) Lots of fixes for BitBlt and HW acceleration.\
2) Hardware Acceleration plugin goes to 1.0.1. Please note there is a seperate plugin with the same name for Carbon. Doing a get info will identify if the plugin is only usable with Carbon Squeak.\
\
v3.0.15 at change set #4026 (May 17th test version)\
(Note browser plugin goes to 3.0.19)\
\
1) Added support for OpenGL HW acceleration plugin\
\
Plugin 3.0.19 fixes\
\
a) Obey embedded tag plug\
b) Fix problem with plugin 3.0.17 not working with netscape 4.x\
c) Carbonize plugin for IE 5.1 \
d) Remove debugging printf than occurred on transition to full screen mode\
\
What has been fixed/changed.\
v3.0.14 at change set #3987\
\
(Note plugin goes to 3.0.17)\
\
1) sqMacDirectory.c. The pathlookup would handle the case of foo:bar::do incorrectly by ignoring the :: path redirection. This has been fixed. However a path lookup will not work if it contains :: and an aliased directory in the middle of the path.\
\
2) sqMacSecurity.c. The pathname for the untrustedUserDirectory was built incorrectly, and the bug mentioned above in sqMacDirectory.c usually kept this from being noticed.\
\
3) sqMacWindow.c we added some logic to do the delay for primitiveRelinquishProcessor, but found it had an large effect on a freecell benchmark. I suspect on a Morpic step wait there is nothing to do so primitiveRelinquishProcessor gets called which then affects response time. So for now we revert to the 3.0.11 behavior, good performance and 100% CPU usage!\
\
4) GetAttribute 1004 returns returns interpreterVersion; which is for example\
"Squeak3.1alpha of 6 February 2001 [latest update: #3987]"\
\
5) When in full screen mode we now attempt to disable resizing, zooming, or moving the window. The window borders are hidden, but in the past it was feasible to grab an edge and alter it, thus confusing the VM.\
\
6) Worked on Carbonizing the browser plugin\
\
7) 3977 & 3978 FloatArray fixes. Makes float arrays go through a new (and working) version of #primitiveHash\
\
8) Fixed problem with accidental mouse clicks being triggered from pulldown menus on application switching.\
\
9)\
"Change Set: 3984 BitBltExtensions-ar\
Date: 4 May 2001\
Author: Andreas Raab\
\
The change set includes various extensions for BitBlt with the goal of migrating the useful features from FXBlt into the general BitBlt mechanisms. These include:\
\
* Handling of LSB and MSB forms:\
BitBlt now handles both, MSB and LSB forms (and their conversions). Only instances of Bitmap are assumed to contain big-endian pixels. All others are assumed to be little endian (reason is that we can only identify Bitmap here). Note that 'LSB' and 'MSB' refers to PIXELS, that is a 1bpp LSB form has its left most pixel in the lowest bit whereas a 1bpp MSB form has its left-most pixel in the highest bit.\
\
For pixel depths < 8 this can be different from what your OS supplies (as an example, Windows bitmaps < 8 are big-endian pixels in little-endian words; we might call them 'middle-endian'). We simply don't deal with those - forms are either big or little endian but nothing inbetween.\
\
BitBlt has got an extra combination rule for swapping pixels in the destination form. This can be used to make byte swapping much more efficient (as soon as we've got more VMs with support for it).\
\
* Handling of 'native bitmaps' (aka surfaces):\
BitBlt is now able to deal with OS surfaces that are registered with the surface plugin.\
\
* Handling of full color maps:\
BitBlt has been extended to deal with instances of ColorMap in addition to the prior mechanism of using only indexed lookups and provide an implicit 16-32 bit color conversion. ColorMaps can specify both, a lookup table and an additional set of masks and shifts to apply during the color mapping operation. \
\
Four independent shifts and masks can be given which can be used for a lot more than just color conversion (as an example, one could do byte swapping with this; but see also BitBlt class>>exampleColorMap). \
\
* Better handling of default arguments:\
For most of the required arguments for BitBlt very reasonable default assumptions can be made. This includes the destOrigin (0@0), clipRect (0@0 extent: destForm extent), sourceOrigin (0@0). BitBlt now substitutes these if they are absent (e.g., nil) in the instance provided.\
\
"\
\
\
v3.0.13 at change set #3848\
\
1) sqMacSecurity was changed to set the unsecure directory to\
system folder:Preferences:Squeak:Internet:My Squeak\
\
v3.0.12 at change set #3848\
1) Fixed problem with creating My Squeak Folder in Documents Folder with System 8.6\
\
What has been fixed/changed.\
v3.0.11 at change set #3848\
\
1) sqMacDirectory had a bug when you resolved a path name. The fast resolve always failed, which invoked the slow resolver. Now the fast resolver works.\
\
2) sqMacSecurity was changed to set the unsecure directory to Documents:My Squeak. \
\
3) sqMacWindow was changed to fix some issues with Squeak capturing events from other applications and to reduce the number of duplicate mouse events that are generated. Also we capture modifier information directly from the mouse and keyboard on null events to fix some problems with Carbon. We hopefully fixed problems with mouse clicks from foreground applications being seen by Squeak and issues with the OS-X Dock clicks.\
\
4) sqMacNSPlugin was changed to use the above mouse/keyboard capture code which is much cleaner than the original fix for the bogus modifier information given to us by netscape on a null event. \
\
5) When you turn full screen off we now correctly reposition the window to the original location versus a few pixels to the left. \
\
What has been fixed/changed.\
v3.0.10 at change set #3848\
\
1) changed VM exception unwind logic\
3796-Exception-unwind-V3,ti...@su..., Paul McDonough, Stephen Pair and others\
\
2) Fixes for the JPEGReader plugin and for Jitter 3\
\
3) Added minimal Mac VM logic to assist in building a small VM.\
\
4) Changed how the browser plugin starts up. Now it starts the interpreter running only after getting the browser setwindow command. This seems to fix a race condition that resulted in a crash at startup time with Netscape 4.x\
\
5) Fixed broken full screen redraw on cmd-tab\
\
6) Fixed what looked like mouse-down, mouse-down, mouse-up sequence. Now reports mouse-down, mouse up.\
\
7) Added StarSqueak plugin as internal plugin\
\
8) Note the current Squeak Plugin should be gotten from the www.squeakland.org site.\
\
v3.0.9 at change set #3776, Boston Snow storm build.\
\
1) A number of changes were made to the interpreter:\
a) added primitive to change a class.\
b) added primitives to get or put 32bit integers\
c) Fix problem with GC and class reshaping\
d) Better logic for method cache flushing\
\
2) Added JPEGReader plugin\
\
\
V3.0.8 at change set #3740\
\
1) The caps lock no longer maps to the shift attribute. So if the caps lock is down mouse clicks will behave normally. \
\
2) Numerous fixes for the BitBltPlugin plugin\
\
3) Memory allocation grow/shrink logic for Carbon was added.\
\
4) Spurious mouse clicks for the browser plugin has been fixed. (This took awhile to fix, I'm sure it's a bug with the Swedish version of Netscape)\
\
5) The browser plugin will attempt first to allocate memory from the browser heap, then the system heap. Most people when faced with a memory issue usually increase memory for the browser first. However memory for the plugin is controlled by an attribute in the EMBED HTML statement. \
\
V3.0.7\
\
1) A bug exists in pre OS 8.x that causes a crash in activate window if the standard get file \
dialog comes up before the Squeak Window. I remove the InvalWindow call found in that routine since it is actually redundant.\
\
2) The standard get file dialog on system 7.x would not terminate if you did a cancel.\
\
3) The InterfaceLib had to be weak linked to prevent CFM startup issues. \
\
V3.0.6\
\
1) Alias resolving is less aggressive.\
\
2) We no longer cache image reads or writes. This was done because OS 9.1 allows you to have very large disk caches, and it's pointless to cache the image read or write.\
\
3) The file flush primitive now actually flushes the file via an OS call. This was a bug in the CodeWarrior 5.3 source code.\
\
4) The 68K version was being built with the 68881 math library. This fails on 68040LC chips. We now use the non-68881 math library. Thanks to Bruce ONeel for find this.\
\
5) A bug was found in the path resolving logic that was added for 3.x. This bug apparently only affects 68K machines, never was identified as a PowerPC issue. \
\
6) The Netscape plugin needs a properly allocated clip region, this code seemed to work ok on new systems, but fails on system 7.6.1\
\
7) The security interface will create a Documents folder on the root volume if the default Document folder has been deleted. This is needed for security purposes. \
\
8) Jitter needs 1MB of free memory to run.\
\
9) 68K machines require another 32K of stack\
\
10) Threads now work on 68K machines, but turned off because of possible performance issues. (I think more study is needed).\
\
11) The 68K version was compiled with better optimization, expect a 15% improvement.\
\
12) fix for BitBltPlugin ascii = byteAt((sourcePtr + charIndex) - 1);\
\
13) The interpreter object validation checking code was alter to work correctly.\
\
V3.0.5\
\
1) sqConfig.h changed due to BE OS header changes\
\
2) sqMacDirectory.c. Added support for Navigation services or Standard File Get to find the image at startup time when the Squeak.image is not found by the VM. This replaces the DOS like console message that comes up saying that Squeak can't find a image.\
\
3) A fix to drag and drop for the browser plugin.\
\
4) We now use Apple's cooperative multithreading package to run the UI in one thread, the VM in the other. This solves some issues with the browser and makes the UI versus VM logic and execution responsibilities easier to understand. \
\
5) Changed the sqMacNSPlugin.c code to support a 3.0VM using multithreading support. This should give Squeak in a browser better performance. Also changed the full screen support to correctly work with multiple monitors.\
\
6) BitBltPlugin.c gets one more op code\
\
7) Added the security interface\
\
8) Added the file flush primitive\
\
9) Rewrote the macintosh readme file\
\
10) Revisited the zoomWindow code and found a bug with multiple monitor support, then I fixed the code to make Full Screen mode work on screen that Squeak window is mostly on, versus the menubar screen. Also if you switch from full screen back it resizes the window back to the orginal size and location before you invoked the full screen. \
\
V3.0.2\
Plugins\
\
Recompiled the internal BitBltPlugin plugin to encorporate:\
Change Set: 258AlphaBlendOpt-dsm\
Author: Duane Maxwell, Paul Phillips/exobox\
a) Short circuits full opaque and full transparent pixels when alpha blending.\
\
Recompiled the internal LargeIntegerPlugin\
3298LargeIntegersV1-2-sr -- Stephan Rudlof -- 29 November 2000\
3299LargeIntV1-2For29-sr -- Stephan Rudlof -- 29 November 2000\
\
VM Software\
\
(b) PowerManagement for macintosh is now supported. You can disable the power manager to give you better performance on some powerbooks at the expense of battery life. See the Preferences Panel for details, category 'Performance'\
- changed sq.h\
- changed sqMacWindow.c to add support for power mgr disabling\
\
(c) Drag and Drop support for the macintosh, dragging files from the Finder to the Squeak window is now supported.\
- sqMacDragDrop.c added\
- sqMacWindow.c changed\
\
(d) Added primitive for get macintosh creator and file type.\
- sqMacDirectory.c changed\
\
(e) Carbon support. Thanks to Karl Goiser ka...@wa... for work he did on sound and other Carbonization hotspots.\
- sqMacAsyncFilePrims.c changed\
- sqMacFFIPPC.c changed (not supported for Carbon)\
- sqMacNetwork.c changed per Apple tech note 1173 Carbon asset tracking\
-sqMacSerialAndMIDIPort.c chnaged (Not supported for Carbon)\
- sqMacSound.c changed per Apple tech note 1198 Carbon double sound buffer playing\
- sqMacWindow.c changed (various changes for Carbon)\
\
(f) Poll at least 60 times a second for the mouse if required. Previous 2.9.x VM did it 30 times but this is too slow and 2.8.x VM do it 60 times a second.\
\
(g) Reworked path support Thanks to Karl Goiser ka...@wa... for starting this.\
- sqmacDirectory.c changed reworked lookupPath\
- sqMacWindow.c changed, added GetApplicationDirectory to get application directory\
\
(h) I rewrote the sqMacDirectory.c logic to enable proper understanding of Apple's Alias logic. This means for example you can alias the "SqueakV3.sources" file and then only have one copy and have all your images point to it. \
\
(i) Added Zoom Window support.\
\
(j) Change the Squeak change file icon to better match Apple's visual guidelines, Thanks to Doug Way for the suggestion and the new icons.\
\
(k) The sound plugins have changed...\
\
(j) Dropped FFI out of the base Squeak because of security concerns\
\
(k) Compiled for 750(G3) processor versus 603\
\
(l) Added screenDepth primitive\
\
The 3.0.x VM contains most of the optional plugins, you might want to check this by inspecting "Smalltalk listBuiltinModules" to see where your plugins are coming from. In some case people have been accidentally overriding the new builtin plugins with older plugins. \
\
The file "Squeak 3.0Alpha10MT.sig" contains the PGP signature for the Squeak 3.0Alpha10MT VM\
\
John M McIntosh jo...@sm...\
\
\
\
\
\
\
\
\
}
|
|
From: John M M. <jo...@us...> - 2003-04-09 23:47:10
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets In directory sc8-pr-cvs1:/tmp/cvs-serv5658/squeak/platforms/Mac OS/vm/specialChangeSets Added Files: VMGlobalsChanges.5.cs Log Message: 3.5.0b5 Faster GC logic --- NEW FILE: VMGlobalsChanges.5.cs --- 'From Squeak3.5alpha of ''7 January 2003'' [latest update: #5169] on 9 April 2003 at 4:33:07 pm'! "Change Set: VMGlobalsChanges Date: 5 April 2003 Author: ti...@su..., jo...@sm... Seconds pass at combining all the changes needed to add the VM global structure support into a single filein. This incorporates:- MoreInterpAccessors-JMM GlobalStructure-JMM GlobalsRiscOS-tpr GCMakeItFaster-JMM GCCMakeItFasterGStruct-JMM VMGlobalsCleanups-tpr VMGLobalsReStructure-JMM "! Object subclass: #CCodeGenerator instanceVariableNames: 'translationDict inlineList constants variables variableDeclarations methods variablesSetCache headerFiles pluginName extraDefs postProcesses isCPP globalVariableUsage ' classVariableNames: 'UseRightShiftForDivide ' [...1618 lines suppressed...] !TVariableNode methodsFor: 'as yet unclassified' stamp: 'JMM 4/5/2002 14:14'! emitCCodeOn: aStream level: level generator: aCodeGen name = 'nil' ifTrue: [ aStream nextPutAll: (aCodeGen cLiteralFor: nil) ] ifFalse: [ aStream nextPutAll: (aCodeGen returnPrefixFromVariable: name) ].! ! TMethod removeSelector: #referencesGlobalStruct:! Interpreter removeSelector: #returnValue:to:! Object subclass: #ObjectMemory instanceVariableNames: 'memory youngStart endOfMemory memoryLimit nilObj falseObj trueObj specialObjectsOop rootTable rootTableCount child field parentField freeBlock lastHash allocationCount lowSpaceThreshold signalLowSpace compStart compEnd fwdTableNext fwdTableLast remapBuffer remapBufferCount allocationsBetweenGCs tenuringThreshold statFullGCs statFullGCMSecs statIncrGCs statIncrGCMSecs statTenures statRootTableOverflows freeContexts freeLargeContexts interruptCheckCounter totalObjectCount shrinkThreshold growHeadroom headerTypeBytes ' classVariableNames: 'AllButHashBits AllButMarkBit AllButMarkBitAndTypeMask AllButRootBit AllButTypeMask BaseHeaderSize BlockContextProto CharacterTable ClassArray ClassBitmap ClassBlockContext ClassByteArray ClassCharacter ClassCompiledMethod ClassExternalAddress ClassExternalData ClassExternalFunction ClassExternalLibrary ClassExternalStructure ClassFloat ClassInteger ClassLargeNegativeInteger ClassLargePositiveInteger ClassMessage ClassMethodContext ClassPoint ClassProcess ClassPseudoContext ClassSemaphore ClassString ClassTranslatedMethod CompactClassMask CompactClasses ConstMinusOne ConstOne ConstTwo ConstZero CtxtTempFrameStart DoAssertionChecks DoBalanceChecks Done ExternalObjectsArray FalseObject FloatProto GCTopMarker HashBits HashBitsOffset HeaderTypeClass HeaderTypeFree HeaderTypeGC HeaderTypeShort HeaderTypeSizeAndClass LargeContextBit LargeContextSize MarkBit MethodContextProto NilContext NilObject RemapBufferSize RootBit RootTableSize SchedulerAssociation SelectorAboutToReturn SelectorCannotInterpret SelectorCannotReturn SelectorDoesNotUnderstand SelectorMustBeBoolean SizeMask SmallContextSize SpecialSelectors StackStart StartField StartObj TheDisplay TheFinalizationSemaphore TheInputSemaphore TheInterruptSemaphore TheLowSpaceSemaphore TheTimerSemaphore TrueObject TypeMask Upward ' poolDictionaries: '' category: 'VMConstruction-Interpreter'! CCodeGeneratorGlobalStructure removeSelector: #globalVariables! CCodeGenerator removeSelector: #generateCodeStringForPrimitives! CCodeGenerator removeSelector: #pluginName! CCodeGenerator removeSelector: #pluginName:! |
|
From: John M M. <jo...@us...> - 2003-04-09 23:47:02
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets
In directory sc8-pr-cvs1:/tmp/cvs-serv5608/squeak/platforms/Mac OS/vm/specialChangeSets
Added Files:
Gnuifier.4.cs
Log Message:
3.5.0b5 Faster GC logic
--- NEW FILE: Gnuifier.4.cs ---
'From Squeak3.5alpha of ''7 January 2003'' [latest update: #5169] on 9 April 2003 at 4:31:35 pm'!
"Change Set: Gnuifier
Date: 1 January 2002
Author: acg
Some code to automate building a VM under GCC. To run, fileIn and execute:
(Gnuifier on: aFileDirectory) gnuify
For example, try something like the following:
(Gnuifier on:
((FileDirectory default
directoryNamed: 'src')
directoryNamed: 'vm') pathName) gnuify
"!
Object subclass: #Gnuifier
instanceVariableNames: 'directory '
classVariableNames: ''
poolDictionaries: ''
category: 'VMConstruction-Building'!
!Gnuifier commentStamp: '<historical>' prior: 0!
My instances automate the translation of a Squeak interpreter for use with GCC. In the specified FileDirectory, I copy 'interp.c' to 'interp.c.old'; translate a gnuified interpreter back into 'interp.c'; and save a working copy of sqGnu.h.
To gnuify an interpreter, try something like one of the following:
(Gnuifier on:
((FileDirectory default
directoryNamed: 'src')
directoryNamed: 'vm') pathName) gnuify
(Gnuifier on:
'powercow X:Users:werdna:Desktop:squeak:Squeak3.2a-4599 Folder:src:vm') gnuify
Structure:
directory FileDirectory -- specifying where I should do my gnuification
I can attempt to undo my damage with #deGnuify.!
!Gnuifier methodsFor: 'as yet unclassified' stamp: 'acg 12/30/2001 14:16'!
copyFrom: inFileStream to: outFileStream
"convert interp.c to use GNU features"
| inData |
Cursor read showWhile:
[inData := inFileStream upToEnd withSqueakLineEndings].
Cursor write showWhile:
[outFileStream nextPutAll: inData].
outFileStream close! !
!Gnuifier methodsFor: 'as yet unclassified' stamp: 'acg 1/1/2002 10:10'!
deGnuify
(directory fileExists: 'interp.c.old')
ifFalse: [^Error signal: 'Cannot deGnuify. The old "interp.c" was not found.'].
(directory fileExists: 'interp.c')
ifTrue: [directory deleteFileNamed: 'interp.c'].
self
copyFrom: (directory oldFileNamed: 'interp.c.old')
to: (directory newFileNamed: 'interp.c').
(directory fileExists: 'sqGnu.h')
ifTrue: [directory deleteFileNamed: 'sqGnu.h'].
directory deleteFileNamed: 'interp.c.old'! !
!Gnuifier methodsFor: 'as yet unclassified' stamp: 'JMM 8/6/2002 13:52'!
gnuify
(directory fileExists: 'interp.c.old') ifTrue:
[(PopUpMenu
confirm: 'Interpreter probably guified (interp.c.old exists).
Do you want to gnuify anyway?') ifFalse: [^nil].
directory deleteFileNamed: 'interp.c.old'].
self
copyFrom: (directory oldFileNamed: 'interp.c')
to: (directory newFileNamed: 'interp.c.old').
directory deleteFileNamed: 'interp.c'.
self
gnuifyFrom:(directory oldFileNamed: 'interp.c.old')
to: (directory newFileNamed: 'interp.c').
! !
!Gnuifier methodsFor: 'as yet unclassified' stamp: 'JMM 3/27/2003 18:06'!
gnuifyFrom: inFileStream to: outFileStream
"convert interp.c to use GNU features"
| inData beforeInterpret inInterpret inInterpretVars beforePrimitiveResponse inPrimitiveResponse |
Cursor read showWhile:
[inData := inFileStream upToEnd withSqueakLineEndings.
inFileStream close].
Cursor write showWhile:
["print a header"
outFileStream
nextPutAll: '/* This file has been post-processed for GNU C */';
cr; cr; cr.
beforeInterpret := true. "whether we are before the beginning of interpret()"
inInterpret := false. "whether we are in the middle of interpret"
inInterpretVars := false. "whether we are in the variables of interpret"
beforePrimitiveResponse := true. "whether we are before the beginning of primitiveResponse()"
inPrimitiveResponse := false. "whether we are inside of primitiveResponse"
inData linesDo: [ :inLine |
| outLine extraOutLine |
outLine := inLine. "print out one line for each input line; by default, print out the line that was input, but some rules modify it"
extraOutLine := nil. "occasionally print a second output line..."
beforeInterpret ifTrue: [
(inLine findString: 'inline:') > 0 ifTrue: [
"oops!!!!"
outFileStream nextPutAll: '#error interp was not inlined, so cannot be gnuified'.
Smalltalk snapshot: false andQuit: true. ].
(inLine = '#include "sq.h"') ifTrue: [
outLine := '#include "sqGnu.h"'. ].
(inLine = 'int interpret(void) {') ifTrue: [
"reached the beginning of interpret"
beforeInterpret := false.
inInterpret := true.
inInterpretVars := true. ] ]
ifFalse: [
inInterpretVars ifTrue: [
(inLine findString: 'register struct foo * foo = &fum;') > 0 ifTrue: [
outLine := '#ifdef FOO_REG
register struct foo * foo FOO_REG = &fum;
#endif' ].
(inLine findString: ' localIP;') > 0 ifTrue: [
outLine := ' register char* localIP IP_REG;' ].
(inLine findString: ' localSP;') > 0 ifTrue: [
outLine := ' register char* localSP SP_REG;'. ].
(inLine findString: ' currentBytecode;') > 0 ifTrue: [
outLine := ' register int currentBytecode CB_REG;' ].
inLine isEmpty ifTrue: [
"reached end of variables"
inInterpretVars := false.
outLine := ' JUMP_TABLE;'. ] ]
ifFalse: [
inInterpret ifTrue: [
"working inside interpret(); translate the switch statement"
(inLine beginsWith: ' case ') ifTrue: [
| caseLabel |
caseLabel := (inLine findTokens: ' :') second.
outLine := ' CASE(', caseLabel, ')' ].
inLine = ' break;' ifTrue: [
outLine := ' BREAK;' ].
inLine = '}' ifTrue: [
"all finished with interpret()"
inInterpret := false. ] ]
ifFalse: [
beforePrimitiveResponse ifTrue: [
(inLine beginsWith: 'int primitiveResponse(') ifTrue: [
"into primitiveResponse we go"
beforePrimitiveResponse := false.
inPrimitiveResponse := true.
extraOutLine := ' PRIM_TABLE;'. ] ]
ifFalse: [
inPrimitiveResponse ifTrue: [
(inLine = ' switch (primitiveIndex) {') ifTrue: [
extraOutLine := outLine.
outLine := ' PRIM_DISPATCH;' ].
(inLine beginsWith: ' case ') ifTrue: [
| caseLabel |
caseLabel := (inLine findTokens: ' :') second.
outLine := ' CASE(', caseLabel, ')' ].
inLine = '}' ifTrue: [
inPrimitiveResponse := false ] ].
] ] ] ].
outFileStream nextPutAll: outLine; cr.
extraOutLine ifNotNil: [
outFileStream nextPutAll: extraOutLine; cr ]]].
outFileStream close! !
!Gnuifier methodsFor: 'as yet unclassified' stamp: 'acg 12/30/2001 14:12'!
setDirectory: aFileDirectory
directory _ aFileDirectory! !
!Gnuifier class methodsFor: 'as yet unclassified' stamp: 'acg 12/30/2001 14:13'!
on: aFilePathString
^self new setDirectory: (FileDirectory on: aFilePathString)! !
|
|
From: John M M. <jo...@us...> - 2003-04-09 23:46:55
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets In directory sc8-pr-cvs1:/tmp/cvs-serv5583/squeak/platforms/Mac OS/vm/specialChangeSets Removed Files: Gnuifier.3.cs Log Message: 3.5.0b5 Faster GC logic --- Gnuifier.3.cs DELETED --- |
|
From: John M M. <jo...@us...> - 2003-04-09 23:46:53
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets In directory sc8-pr-cvs1:/tmp/cvs-serv5540/squeak/platforms/Mac OS/vm/specialChangeSets Removed Files: Globalstructure-JMM.4.cs Log Message: 3.5.0b5 Faster GC logic --- Globalstructure-JMM.4.cs DELETED --- |
|
From: Andreas R. <and...@us...> - 2003-04-08 21:31:07
|
Update of /cvsroot/squeak/squeak/platforms/win32/extras/3.4.3 In directory sc8-pr-cvs1:/tmp/cvs-serv15601 Added Files: BBCompositing.cs Log Message: fix needed but not in image --- NEW FILE: BBCompositing.cs --- 'From Squeak3.4 of 1 March 2003 [latest update: #5170] on 6 April 2003 at 7:05:25 pm'! !BitBltSimulation methodsFor: 'combination rules' stamp: 'ar 4/6/2003 18:52'! alphaBlend: sourceWord with: destinationWord "Blend sourceWord with destinationWord, assuming both are 32-bit pixels. The source is assumed to have 255*alpha in the high 8 bits of each pixel, while the high 8 bits of the destinationWord will be ignored. The blend produced is alpha*source + (1-alpha)*dest, with the computation being performed independently on each color component. The high byte of the result will be 0." | alpha unAlpha colorMask result blend shift | self inline: false. alpha _ sourceWord >> 24. "High 8 bits of source pixel" alpha = 0 ifTrue: [ ^ destinationWord ]. alpha = 255 ifTrue: [ ^ sourceWord ]. unAlpha _ 255 - alpha. colorMask _ 16rFF. result _ 0. "red" shift := 0. blend := ((sourceWord >> shift bitAnd: colorMask) * alpha) + ((destinationWord>>shift bitAnd: colorMask) * unAlpha) + 254 // 255 bitAnd: colorMask. result _ result bitOr: blend << shift. "green" shift := 8. blend := ((sourceWord >> shift bitAnd: colorMask) * alpha) + ((destinationWord>>shift bitAnd: colorMask) * unAlpha) + 254 // 255 bitAnd: colorMask. result _ result bitOr: blend << shift. "blue" shift := 16. blend := ((sourceWord >> shift bitAnd: colorMask) * alpha) + ((destinationWord>>shift bitAnd: colorMask) * unAlpha) + 254 // 255 bitAnd: colorMask. result _ result bitOr: blend << shift. "alpha (pre-multiplied)" shift := 24. blend := (alpha * 255) + ((destinationWord>>shift bitAnd: colorMask) * unAlpha) + 254 // 255 bitAnd: colorMask. result _ result bitOr: blend << shift. ^ result ! ! |
|
From: Andreas R. <and...@us...> - 2003-04-08 21:30:23
|
Update of /cvsroot/squeak/squeak/platforms/win32/extras/3.4.3 In directory sc8-pr-cvs1:/tmp/cvs-serv15175/3.4.3 Log Message: Directory /cvsroot/squeak/squeak/platforms/win32/extras/3.4.3 added to the repository |
|
From: Andreas R. <and...@us...> - 2003-04-08 21:18:48
|
Update of /cvsroot/squeak/squeak/platforms/win32/extras In directory sc8-pr-cvs1:/tmp/cvs-serv9662 Added Files: FontPlugin.st RePlugin.st Win32StandardVMConfigurationTest.st Log Message: keep st plugin sources for reference --- NEW FILE: FontPlugin.st --- 'From TeaSqueak3.2 of 19 September 2002 [latest update: #292] on 25 October 2002 at 12:17:06 am'! InterpreterPlugin subclass: #FontPlugin instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Squeak-Plugins'! !FontPlugin commentStamp: '<historical>' prior: 0! FontPlugin translate.! !FontPlugin methodsFor: 'initialize' stamp: 'ar 6/4/2000 19:18'! initialiseModule "Initialise the module" self export: true. ^self cCode: 'ioFontInit()' inSmalltalk:[true]! ! !FontPlugin methodsFor: 'initialize' stamp: 'ar 6/4/2000 19:18'! shutdownModule "Initialise the module" self export: true. ^self cCode: 'ioFontShutdown()' inSmalltalk:[true]! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 23:11'! primitiveCreateFont | fontName fontFlags fontSize fontNameLength fontNameIndex fontID | self export: true. interpreterProxy methodArgumentCount = 3 ifFalse:[^interpreterProxy primitiveFail]. fontFlags _ interpreterProxy stackIntegerValue: 0. fontSize _ interpreterProxy stackIntegerValue: 1. fontName _ interpreterProxy stackObjectValue: 2. interpreterProxy failed ifTrue:[^nil]. (interpreterProxy isBytes: fontName) ifFalse:[^interpreterProxy primitiveFail]. fontNameLength _ interpreterProxy byteSizeOf: fontName. fontNameIndex _ self cCoerce: (interpreterProxy firstIndexableField: fontName) to:'int'. fontID _ self cCode:'ioCreateFont(fontNameIndex, fontNameLength, fontSize, fontFlags)' inSmalltalk:[-1]. fontID < 0 ifTrue:[^interpreterProxy primitiveFail]. interpreterProxy pop: 4. interpreterProxy pushInteger: fontID.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 20:57'! primitiveDestroyFont | fontIndex | self export: true. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. (self ioDestroyFont: fontIndex) ifFalse:[^interpreterProxy primitiveFail]. ^interpreterProxy pop: 1! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 22:24'! primitiveFontAscent | fontIndex ascent | self export: true. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. ascent _ self ioFontAscent: fontIndex. ascent >= 0 ifFalse:[^interpreterProxy primitiveFail]. interpreterProxy pop: 2. ^interpreterProxy pushInteger: ascent.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 2/18/2001 19:33'! primitiveFontDataSize | fontIndex size | self export: true. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. size _ self ioGetFontDataSize: fontIndex. interpreterProxy pop: 2. ^interpreterProxy pushInteger: size.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 22:25'! primitiveFontDescent | fontIndex descent | self export: true. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. descent _ self ioFontDescent: fontIndex. descent >= 0 ifFalse:[^interpreterProxy primitiveFail]. interpreterProxy pop: 2. ^interpreterProxy pushInteger: descent.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 2/18/2001 19:57'! primitiveFontEmbeddingFlags | fontIndex flags | self export: true. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. flags _ self ioFontEmbeddingFlags: fontIndex. interpreterProxy pop: 2. ^interpreterProxy pushInteger: flags! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 21:08'! primitiveFontEncoding | fontIndex encoding | self export: true. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. encoding _ self ioFontEncoding: fontIndex. encoding >= 0 ifFalse:[^interpreterProxy primitiveFail]. interpreterProxy pop: 2. ^interpreterProxy pushInteger: encoding.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 8/28/2000 17:31'! primitiveFontFullWidthOfChar | fontIndex charIndex array fullWidth | self var: #fullWidth declareC:'int fullWidth[3]'. self export: true. interpreterProxy methodArgumentCount = 2 ifFalse:[^interpreterProxy primitiveFail]. charIndex _ interpreterProxy stackIntegerValue: 0. fontIndex _ interpreterProxy stackIntegerValue: 1. interpreterProxy failed ifTrue:[^nil]. (self cCode: 'ioFontFullWidthOfChar(fontIndex, charIndex, fullWidth)' inSmalltalk:[false]) ifFalse:[^interpreterProxy primitiveFail]. array _ interpreterProxy instantiateClass: interpreterProxy classArray indexableSize: 3. 0 to: 2 do:[:i| interpreterProxy storeInteger: i ofObject: array withValue: (fullWidth at: i). ]. interpreterProxy pop: 3. ^interpreterProxy push: array! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 8/28/2000 17:31'! primitiveFontGetKernPair | fontIndex kernIndex array kernPair | self var: #kernPair declareC:'int kernPair[3]'. self export: true. interpreterProxy methodArgumentCount = 2 ifFalse:[^interpreterProxy primitiveFail]. kernIndex _ interpreterProxy stackIntegerValue: 0. fontIndex _ interpreterProxy stackIntegerValue: 1. interpreterProxy failed ifTrue:[^nil]. (self cCode: 'ioFontGetKernPair(fontIndex, kernIndex, kernPair)' inSmalltalk:[false]) ifFalse:[^interpreterProxy primitiveFail]. array _ interpreterProxy instantiateClass: interpreterProxy classArray indexableSize: 3. 0 to: 2 do:[:i| interpreterProxy storeInteger: i ofObject: array withValue: (kernPair at: i). ]. interpreterProxy pop: 3. ^interpreterProxy push: array! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 21:11'! primitiveFontGlyphOfChar | fontIndex charIndex formOop formBits formWidth formHeight formDepth ppw pitch | self export: true. interpreterProxy methodArgumentCount = 3 ifFalse:[^interpreterProxy primitiveFail]. formOop _ interpreterProxy stackObjectValue: 0. charIndex _ interpreterProxy stackIntegerValue: 1. fontIndex _ interpreterProxy stackIntegerValue: 2. interpreterProxy failed ifTrue:[^nil]. ((interpreterProxy isPointers: formOop) and:[ (interpreterProxy slotSizeOf: formOop) >= 4]) ifFalse:[^interpreterProxy primitiveFail]. formBits _ interpreterProxy fetchPointer: 0 ofObject: formOop. formWidth _ interpreterProxy fetchInteger: 1 ofObject: formOop. formHeight _ interpreterProxy fetchInteger: 2 ofObject: formOop. formDepth _ interpreterProxy fetchInteger: 3 ofObject: formOop. (formWidth > 0 and:[formHeight > 0 and:[formDepth > 0]]) ifFalse:[^interpreterProxy primitiveFail]. ppw _ 32 // formDepth. pitch _ formWidth + (ppw-1) // ppw * 4. ((interpreterProxy fetchClassOf: formBits) == interpreterProxy classBitmap and:[(interpreterProxy byteSizeOf: formBits) = (pitch * formHeight)]) ifFalse:[^interpreterProxy primitiveFail]. formBits _ self cCoerce: (interpreterProxy firstIndexableField: formBits) to: 'int'. (self cCode:'ioFontGlyphOfChar(fontIndex, charIndex, formBits, formWidth, formHeight, formDepth)' inSmalltalk:[false]) ifFalse:[^interpreterProxy primitiveFail]. ^interpreterProxy pop: 3.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 8/28/2000 16:06'! primitiveFontNumKernPairs | fontIndex nKernPairs | self export: true. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. nKernPairs _ self ioFontNumKernPairs: fontIndex. nKernPairs >= 0 ifFalse:[^interpreterProxy primitiveFail]. interpreterProxy pop: 2. ^interpreterProxy pushInteger: nKernPairs.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 21:08'! primitiveFontWidthOfChar | fontIndex charIndex charWidth | self export: true. interpreterProxy methodArgumentCount = 2 ifFalse:[^interpreterProxy pr imitiveFail]. charIndex _ interpreterProxy stackIntegerValue: 0. fontIndex _ interpreterProxy stackIntegerValue: 1. interpreterProxy failed ifTrue:[^nil]. charWidth _ self ioFont: fontIndex WidthOfChar: charIndex. (charWidth >= 0) ifFalse:[^interpreterProxy primitiveFail]. interpreterProxy pop: 3. ^interpreterProxy pushInteger: charWidth! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 2/18/2001 19:39'! primitiveGetFontData | fontIndex buffer bufSize bufPtr result | self export: true. self var: #bufPtr type:'char *'. interpreterProxy methodArgumentCount = 2 ifFalse:[^interpreterProxy primitiveFail]. buffer _ interpreterProxy stackObjectValue: 0. fontIndex _ interpreterProxy stackIntegerValue: 1. interpreterProxy failed ifTrue:[^nil]. (interpreterProxy isBytes: buffer) ifFalse:[^interpreterProxy primitiveFail]. bufSize _ interpreterProxy byteSizeOf: buffer. bufPtr _ interpreterProxy firstIndexableField: buffer. result _ self cCode: 'ioGetFontData(fontIndex, bufPtr, bufSize)'. interpreterProxy pop: 3. ^interpreterProxy pushInteger: result.! ! !FontPlugin methodsFor: 'primitives' stamp: 'ar 6/4/2000 19:23'! primitiveListFont | fontIndex fontName fontNameLen fontOop fontPtr | self export: true. self var: #fontName type:'char *'. self var: #fontPtr type:'char *'. interpreterProxy methodArgumentCount = 1 ifFalse:[^interpreterProxy primitiveFail]. fontIndex _ interpreterProxy stackIntegerValue: 0. interpreterProxy failed ifTrue:[^nil]. fontName _ self ioListFont: fontIndex. fontName == nil ifTrue:[ interpreterProxy pop: 2. ^interpreterProxy push: interpreterProxy nilObject]. fontNameLen _ fontName strlen. fontOop _ interpreterProxy instantiateClass: interpreterProxy classString indexableSize: fontNameLen. fontPtr _ interpreterProxy firstIndexableField: fontOop. 0 to: fontNameLen-1 do:[:i| fontPtr at: i put: (fontName at: i)]. interpreterProxy pop: 2. interpreterProxy push: fontOop.! ! !FontPlugin class methodsFor: 'translation' stamp: 'ar 2/18/2001 19:58'! headerFile ^'/* FontPlugin header file */ char *ioListFont(int fontIndex); int ioCreateFont(int fontNameIndex, int fontNameLength, int pixelSize, int flags); int ioDestroyFont(int fontIndex); int ioFontWidthOfChar(int fontIndex, int characterIndex); int ioFontFullWidthOfChar(int fontIndex, int characterIndex, int width[3]); int ioFontNumKernPairs(int fontIndex); int ioFontGetKernPair(int fontIndex, int kernIndex, int kernPair[3]); int ioFontGlyphOfChar(int fontIndex, int characterIndex, int formBitsIndex, int formWidth, int formHeight, int formDepth); int ioFontEncoding(int fontIndex); int ioFontAscent(int fontIndex); int ioFontDescent(int fontIndex); int ioFontEmbeddingFlags(int fontIndex); int ioGetFontDataSize(int fontIndex); int ioGetFontData(int fontIndex, char *buffer, int bufSize); '! ! --- NEW FILE: RePlugin.st --- 'From Squeak3.4 of 1 March 2003 [latest update: #5170] on 8 April 2003 at 11:09:18 pm'! TestInterpreterPlugin subclass: #RePlugin instanceVariableNames: 'netMemory numAllocs numFrees lastAlloc patternStr rcvr compileFlags pcrePtr extraPtr errorStr errorOffset matchFlags patternStrPtr errorStrBuffer ' classVariableNames: '' poolDictionaries: '' category: 'Werdna-Re'! !RePlugin commentStamp: '<historical>' prior: 0! /* Regular Expression Plugin (This class comment becomes part of rePlugin.c) RePlugin translate: 'RePlugin.c' doInlining: true. See documentation and source code for the PCRE C Library Code. This plugin is designed to serve an object such as RePattern: patternStr A 0-terminated string comprising the pattern to be compiled. compileFlags An Integer representing re compiler options PCREBuffer A ByteArray of regular expression bytecodes extraPtr A ByteArray of match optimization data (or nil) errorString A String Object For Holding an Error Message (when compile failed) errorOffset The index in patternStr (0-based) where the error ocurred (when compile failed) matchFlags An Integer representing re matcher options matchSpaceObj An Integer array for match results and workspace during matching. The instance variables must appear in the preceding order. MatchSpaceObj must be allocated by the calling routine and contain at least 6*(numGroups+1) bytes. */ #include "pcre.h" #include "internal.h" /* Slight machine-specific hack for MacOS Memory Management */ #ifdef TARGET_OS_MAC #define malloc(ptr) NewPtr(ptr) #define free(ptr) DisposePtr(aPointer) #endif /* Adjust malloc and free routines as used by PCRE */ void rePluginFree(void * aPointer); void * rePluginMalloc(size_t anInteger); void *(*pcre_malloc)(size_t) = rePluginMalloc; void (*pcre_free)(void *) = rePluginFree; ! !RePlugin methodsFor: 're primitives' stamp: 'acg 3/12/1999 23:36'! primPCRECompile "<rcvr primPCRECompile>, where rcvr is an object with instance variables: 'patternStr compileFlags pcrePtr extraPtr errorStr errorOffset matchFlags' Compile the regular expression in patternStr, and if the compilation is successful, attempt to optimize the compiled expression. Store the results in <pcrePtr> and <extratr>, or fill errorStr with a meaningful errorString and errorOffset with an indicator where the error was found, applying compileFlags throughout. Answer nil with a clean compile (regardless of whether an optimization is possible, and answer with the string otherwise." self export: true. self loadRcvrFromStackAt: 0. patternStrPtr _ self rcvrPatternStrPtr. compileFlags _ self rcvrCompileFlags. interpreterProxy failed ifTrue:[^ nil]. pcrePtr _ self cCode: '(int) pcre_compile(patternStrPtr, compileFlags, &errorStrBuffer, &errorOffset, NULL)'. pcrePtr ifTrue: [ self allocateByteArrayAndSetRcvrPCREPtrFromPCRE: pcrePtr. extraPtr _ self cCode: '(int) pcre_study((pcre *)pcrePtr, compileFlags, &errorStrBuffer)'. self allocateByteArrayAndSetRcvrExtraPtrFrom: extraPtr. self rePluginFree: (self cCoerce: pcrePtr to: 'void *'). extraPtr ifTrue: [self rePluginFree: (self cCoerce: extraPtr to: 'void *')]. interpreterProxy failed ifTrue:[^ nil]. interpreterProxy pop: 1 thenPush: interpreterProxy nilObject] ifFalse: [ errorStr _ self allocateStringAndSetRcvrErrorStrFromCStr: errorStrBuffer. self rcvrErrorOffsetFrom: errorOffset. interpreterProxy failed ifTrue:[^ nil]. interpreterProxy pop: 1 thenPush: errorStr].! ! !RePlugin methodsFor: 're primitives' stamp: 'acg 8/17/2002 16:12'! primPCREExec "<rcvr primPCREExec: searchObject>, where rcvr is an object with instance variables: 'patternStr compileFlags pcrePtr extraPtr errorStr errorOffset matchFlags' Apply the regular expression (stored in <pcrePtr> and <extratr>, generated from calls to primPCRECompile), to smalltalk String searchObject using <matchOptions>. If there is no match, answer nil. Otherwise answer a ByteArray of offsets representing the results of the match." | searchObject searchBuffer length result matchSpacePtr matchSpaceSize | self export: true. self var:#searchBuffer declareC: 'char *searchBuffer'. self var:#matchSpacePtr declareC: 'int *matchSpacePtr'. self var:#result declareC: 'int result'. "Load Parameters" searchObject _ interpreterProxy stackObjectValue: 0. searchBuffer _ interpreterProxy arrayValueOf: searchObject. length _ interpreterProxy byteSizeOf: searchObject. self loadRcvrFromStackAt: 1. "Load Instance Variables" pcrePtr _ self rcvrPCREBufferPtr. extraPtr _ self rcvrExtraPtr. matchFlags _ self rcvrMatchFlags. matchSpacePtr _ self rcvrMatchSpacePtr. matchSpaceSize _ self rcvrMatchSpaceSize. interpreterProxy failed ifTrue:[^ nil]. result _ self cCode: 'pcre_exec((pcre *)pcrePtr, (pcre_extra *)extraPtr, searchBuffer, length, 0, matchFlags, matchSpacePtr, matchSpaceSize)'. interpreterProxy pop: 2; pushInteger: result. "empty call so compiler doesn't bug me about variables not used" self touch: searchBuffer; touch: matchSpacePtr; touch: matchSpaceSize; touch: length ! ! !RePlugin methodsFor: 're primitives' stamp: 'acg 8/17/2002 16:13'! primPCREExecfromto "<rcvr primPCREExec: searchObject> from: fromInteger to: toInteger>, where rcvr is an object with instance variables: 'patternStr compileFlags pcrePtr extraPtr errorStr errorOffset matchFlags' Apply the regular expression (stored in <pcrePtr> and <extratr>, generated from calls to primPCRECompile), to smalltalk String searchObject using <matchOptions>, beginning at offset <fromInteger> and continuing until offset <toInteger>. If there is no match, answer nil. Otherwise answer a ByteArray of offsets representing the results of the match." | searchObject searchBuffer length result matchSpacePtr matchSpaceSize fromInteger toInteger | self export: true. self var:#searchBuffer declareC: 'char *searchBuffer'. self var:#fromInteger declareC: 'int fromInteger'. self var:#toInteger declareC: 'int toInteger'. self var:#matchSpacePtr declareC: 'int *matchSpacePtr'. self var:#result declareC: 'int result'. "Load Parameters" toInteger _ interpreterProxy stackIntegerValue: 0. fromInteger _ interpreterProxy stackIntegerValue: 1. searchObject _ interpreterProxy stackObjectValue: 2. searchBuffer _ interpreterProxy arrayValueOf: searchObject. length _ interpreterProxy byteSizeOf: searchObject. self loadRcvrFromStackAt: 3. "Validate parameters" interpreterProxy success: (1 <= fromInteger). interpreterProxy success: (toInteger<=length). fromInteger _ fromInteger - 1. "Smalltalk offsets are 1-based" interpreterProxy success: (fromInteger<=toInteger). "adjust length, searchBuffer" length _ toInteger - fromInteger. searchBuffer _ searchBuffer + fromInteger. "Load Instance Variables" pcrePtr _ self rcvrPCREBufferPtr. extraPtr _ self rcvrExtraPtr. matchFlags _ self rcvrMatchFlags. matchSpacePtr _ self rcvrMatchSpacePtr. matchSpaceSize _ self rcvrMatchSpaceSize. interpreterProxy failed ifTrue:[^ nil]. result _ self cCode: 'pcre_exec((pcre *)pcrePtr, (pcre_extra *)extraPtr, searchBuffer, length, 0, matchFlags, matchSpacePtr, matchSpaceSize)'. interpreterProxy pop: 2; pushInteger: result. "empty call so compiler doesn't bug me about variables not used" self touch: searchBuffer; touch: matchSpacePtr; touch: matchSpaceSize; touch: length ! ! !RePlugin methodsFor: 're primitives' stamp: 'acg 3/12/1999 23:32'! primPCRENumSubPatterns "<rcvr primPCRENumSubPatterns>, where rcvr is an object with instance variables: 'patternStr compileFlags pcrePtr extraPtr errorStr errorOffset matchFlags' Return the number of subpatterns captured by the compiled pattern." self export: true. "Load Parameters" self loadRcvrFromStackAt: 0. "Load Instance Variables" pcrePtr _ self rcvrPCREBufferPtr. interpreterProxy pop: 1; pushInteger: (self cCode: 'pcre_info((pcre *)pcrePtr, NULL, NULL)'). ! ! !RePlugin methodsFor: 'memory management' stamp: 'acg 2/25/1999 08:36'! primLastAlloc self export: true. interpreterProxy pop:1; pushInteger: lastAlloc ! ! !RePlugin methodsFor: 'memory management' stamp: 'a cg 2/21/1999 23:20'! primNetMemory self export: true. interpreterProxy pop:1; pushInteger: netMemory ! ! !RePlugin methodsFor: 'memory management' stamp: 'acg 2/21/1999 23:20'! primNumAllocs self export: true. interpreterProxy pop:1; pushInteger: numAllocs ! ! !RePlugin methodsFor: 'memory management' stamp: 'acg 2/21/1999 23:20'! primNumFrees self export: true. interpreterProxy pop:1; pushInteger: numFrees ! ! !RePlugin methodsFor: 'memory management' stamp: 'acg 3/5/1999 09:18'! rePluginFree: aPointer "Free a block of fixed memory allocated with rePluginMalloc. Instrumented version of C free() to facilitate leak analysis from Smalltalk. OS-specific variations on malloc/free, such as with MacOS, are handled by adding a C macro to the header file redefining malloc/free -- see the class comment" self inline: true. self var: #aPointer declareC: 'void * aPointer'. self returnTypeC: 'void'. numFrees _ numFrees + 1. (aPointer) ifTrue: [self cCode: 'free(aPointer)'] ! ! !RePlugin methodsFor: 'memory management' stamp: 'acg 3/5/1999 09:19'! rePluginMalloc: anInteger "Allocate a block of fixed memory using C calls to malloc(). Instrumented to facilitate leak analysis from Smalltalk. Set global lastAlloc to anInteger. OS-specific variations on malloc/free, such as with MacOS, are handled by adding a C macro to the header file redefining malloc/free -- see the class comment" | aPointer | self inline: true. self var: #anInteger declareC: 'size_t anInteger'. self var: #aPointer declareC: 'void *aPointer'. self returnTypeC: 'void *'. numAllocs _ numAllocs + 1. (aPointer _ self cCode: 'malloc(anInteger)') ifTrue: [lastAlloc _ anInteger]. ^aPointer ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/27/1999 23:22'! allocateByteArrayAndSetRcvrExtraPtrFrom: anExtraPtr | extraObject extraByteArrayPtr | self var: #extraByteArrayPtr declareC: 'void *extraByteArrayPtr'. anExtraPtr ifFalse: [extraObject _ interpreterProxy nilObject] ifTrue: [ "Allocate a Smalltalk ByteArray -- lastAlloc contains the length" extraObject _ interpreterProxy instantiateClass: (interpreterProxy classByteArray) indexableSize: (self cCode: 'sizeof(real_pcre_extra)'). self loadRcvrFromStackAt: 0. "Assume garbage collection after instantiation" "Copy from the C bytecode buffer to the Smalltalk ByteArray" extraByteArrayPtr _ interpreterProxy arrayValueOf: extraObject. self cCode:'memcpy(extraByteArrayPtr, (void *) anExtraPtr, sizeof(real_pcre_extra))']. "Set rcvrErrorStr from errorStr and Return" self rcvrExtraPtrFrom: extraObject. self touch: extraByteArrayPtr. ^extraObject. ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/27/1999 22:57'! allocateByteArrayAndSetRcvrPCREPtrFromPCRE: aPCREPtr | patObject patByteArrayPtr | self var: #patByteArrayPtr declareC: 'void *patByteArrayPtr'. "Allocate a Smalltalk ByteArray -- lastAlloc contains the length" patObject _ interpreterProxy instantiateClass: (interpreterProxy classByteArray) indexableSize: lastAlloc. self loadRcvrFromStackAt: 0. "Assume garbage collection after instantiation" "Copy from the C bytecode buffer to the Smalltalk ByteArray" patByteArrayPtr _ interpreterProxy arrayValueOf: patObject. self cCode:'memcpy(patByteArrayPtr, (void *) aPCREPtr, lastAlloc)'. "Set rcvrErrorStr from errorStr and Return" self rcvrPCREBufferFrom: patObject. self touch: patByteArrayPtr. ^patObject. ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'tpr 8/17/2002 18:01'! allocateStringAndSetRcvrErrorStrFromCStr: aCStrBuffer |length errorStrObj errorStrObjPtr | self var: #aCStrBuffer declareC: 'const char *aCStrBuffer'. self var: #errorStrObjPtr declareC: 'void *errorStrObjPtr'. "Allocate errorStrObj" length _ self cCode: 'strlen(aCStrBuffer)'. errorStrObj _ interpreterProxy instantiateClass: (interpreterProxy classString) indexableSize: length. self loadRcvrFromStackAt: 0. "Assume garbage collection after instantiation" "Copy aCStrBuffer to errorStrObj's buffer" errorStrObjPtr _ interpreterProxy arrayValueOf: errorStrObj. self cCode:'memcpy(errorStrObjPtr,aCStrBuffer,length)'. self touch: errorStrObjPtr; touch: errorStrObj. "Set rcvrErrorStr from errorStrObj and Return" self rcvrErrorStrFrom: errorStrObj. ^errorStrObj.! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/21/1999 22:58'! loadRcvrFromStackAt: stackInteger self inline:true. rcvr _ interpreterProxy stackObjectValue: stackInteger. ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/21/1999 21:20'! rcvrCompileFlags self inline:true. ^interpreterProxy fetchInteger: 1 ofObject: rcvr. ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/21/1999 22:46'! rcvrErrorOffsetFrom: anInteger self inline: true. interpreterProxy storeInteger: 5 ofObject: rcvr withValue: anInteger. ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/24/1999 20:53'! rcvrErrorStrFrom: aString self inline: true. interpreterProxy storePointer: 4 ofObject: rcvr withValue: aString. ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'ikp 8/21/2002 22:40'! rcvrExtraPtr |extraObj| self inline: true. extraObj _ interpreterProxy fetchPointer: 3 ofObject: rcvr. (extraObj = (interpreterProxy nilObject)) ifTrue: [^ self cCode: '(int) NULL']. ^self cCoerce:(interpreterProxy arrayValueOf: extraObj) to: 'int'.! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/27/1999 23:42'! rcvrExtraPtrFrom: aByteArrayOrNilObject self inline: true. interpreterProxy storePointer: 3 ofObject: rcvr withValue: aByteArrayOrNilObject! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/21/1999 21:19'! rcvrMatchFlags self inline: true. ^interpreterProxy fetchInteger: 6 ofObject: rcvr. ! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/25/1999 00:49'! rcvrMatchSpacePtr self inline: true. self returnTypeC: 'int *'. ^self cCoerce: (interpreterProxy fetchArray: 7 ofObject: rcvr) to: 'int *'.! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/25/1999 00:52'! rcvrMatchSpaceSize self inline: true. ^(interpreterProxy byteSizeOf: (interpreterProxy fetchPointer: 7 ofObject: rcvr))//4.! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/24/1999 21:33'! rcvrPCREBufferFrom: aByteArray self inline: true. interpreterProxy storePointer: 2 ofObject: rcvr withValue: aByteArray! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/24/1999 21:33'! rcvrPCREBufferPtr self inline: true. ^self cCoerce: (interpreterProxy fetchArray: 2 ofObject: rcvr) to: 'int'.! ! !RePlugin methodsFor: 'rcvr linkage' stamp: 'acg 2/24/1999 21:34'! rcvrPatternStrPtr self inline: true. self returnTypeC: 'char *'. ^self cCoerce: (interpreterProxy fetchArray: 0 ofObject: rcvr) to: 'char *'.! ! !RePlugin methodsFor: 'private' stamp: 'acg 3/12/1999 23:32'! touch: anOop "Do nothing but fool the compiler into thinking my parameter was used. Since I am inlined, I add no overhead whatsoever." self inline: true.! ! "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "! RePlugin class instanceVariableNames: ''! !RePlugin class methodsFor: 'plugin code generation' stamp: 'tpr 8/17/2002 18:02'! declareCVarsIn: cg cg addHeaderFile:'"rePlugin.h"'. "Memory Managament Error Checking" cg var: 'netMemory' declareC: 'int netMemory = 0'. cg var: 'numAllocs' declareC: 'int numAllocs = 0'. cg var: 'numFrees' declareC: 'int numFrees = 0'. cg var: 'lastAlloc' declareC: 'int lastAlloc = 0'. "The receiver Object Pointer" cg var: 'rcvr' declareC: 'int rcvr'. "Instance Variables of Receiver Object" cg var: 'patternStr' declareC: 'int patternStr'. cg var: 'compileFlags' declareC: 'int compileFlags'. cg var: 'pcrePtr' declareC: 'int pcrePtr'. cg var: 'extraPtr' declareC: 'int extraPtr'. cg var: 'errorStr' declareC: 'int errorStr'. cg var: 'errorOffset' declareC: 'int errorOffset'. cg var: 'matchFlags' declareC: 'int matchFlags'. "Support Variables for Access to Receiver Instance Variables" cg var: 'patternStrPtr' declareC: 'const char * patternStrPtr'. cg var: 'errorStrBuffer' declareC: 'const char * errorStrBuffer '.! ! !RePlugin class methodsFor: 'plugin code generation' stamp: 'acg 8/16/2002 22:51'! hasHeaderFile "If there is a single intrinsic header file to be associated with the plugin, here is where you want to flag" ^true! ! !RePlugin class methodsFor: 'plugin code generation' stamp: 'nk 11/21/2002 15:54'! moduleName ^'RePlugin'! ! !RePlugin class methodsFor: 'plugin code generation' stamp: 'acg 7/27/2002 20:09'! requiresCrossPlatformFiles "default is ok for most, any plugin needing cross platform files must say so" ^true! ! --- NEW FILE: Win32StandardVMConfigurationTest.st --- 'From Squeak3.4 of 1 March 2003 [latest update: #5170] on 9 March 2003 at 1:59:33 am'! TestCase subclass: #Win32StandardVMConfigurationTest instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Tests-Win32-VM'! !Win32StandardVMConfigurationTest commentStamp: 'ar 3/9/2003 01:58' prior: 0! Win32StandardVMConfigurationTest consists of a series of tests for determining whether the current system runs the "standard" configuration for Win32 VMs. "Standard" is rather loosely defined as of now and essentially means what is contained in this test. The test case can be used for two purposes: * Determining if a VM build adheres to the standard configuration, e.g., figuring out if you (or rather _I_) forgot to include a plugin or made a mistake wrt. to internal vs. external plugins. In this sense, this test is the ultimate reference for what is considered standard and what isn't. * Determining if a running system adheres to the standard configuration, e.g., validating that in particular none of the internal plugins get "shadowed" by an external one (this can lead to crashes). In this sense, this tests serves the purpose of identifying "non-conforming" configurations. The configuration tests have been written in a way that allows them to pass if they're run on any other platform.! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 01:26'! externalPlugin: pluginName "see if the plugin with the given name is present as a plugin" | pluginString theMethod spec result | Smalltalk platformName = 'Win32' ifFalse:[^self]. pluginString := Smalltalk listBuiltinModules detect:[:any| any beginsWith: pluginName,' '] ifNone:[nil]. self assert: pluginString isNil. "try loading the plugin" theMethod _ self class lookupSelector: #tryNamedPrimitive. self assert: theMethod notNil. theMethod ifNil:[^self]. spec _ theMethod literalAt: 1. spec at: 1 put: pluginName asSymbol. spec at: 2 put: #''. spec at: 3 put: 0. spec at: 4 put: 0. theMethod flushCache. result := self tryNamedPrimitive. self assert: (result == ContextPart primitiveFailToken). pluginString := Smalltalk listLoadedModules detect:[:any| any beginsWith: pluginName,' '] ifNone:[nil]. self assert: pluginString notNil. pluginString ifNil:[^self]. self assert: (pluginString endsWith: ' (e)'). ! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 01:26'! internalPlugin: pluginName "see if the plugin with the given name is present as a plugin" | pluginString theMethod spec result | Smalltalk platformName = 'Win32' ifFalse:[^self]. pluginString := Smalltalk listBuiltinModules detect:[:any| any beginsWith: pluginName,' '] ifNone:[nil]. self assert: pluginString notNil. pluginString ifNil:[^self]. "try loading the plugin" theMethod _ self class lookupSelector: #tryNamedPrimitive. self assert: theMethod notNil. theMethod ifNil:[^self]. spec _ theMethod literalAt: 1. spec at: 1 put: pluginName asSymbol. spec at: 2 put: #''. spec at: 3 put: 0. spec at: 4 put: 0. theMethod flushCache. result := self tryNamedPrimitive. self assert: (result == ContextPart primitiveFailToken). pluginString := Smalltalk listLoadedModules detect:[:any| any beginsWith: pluginName,' '] ifNone:[nil]. self assert: pluginString notNil. pluginString ifNil:[^self]. self assert: (pluginString endsWith: ' (i)'). ! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:40'! testADPCMCodecPlugin self internalPlugin: 'ADPCMCodecPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:40'! testAsynchFilePlugin self internalPlugin: 'AsynchFilePlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:40'! testB3DAcceleratorPlugin self internalPlugin: 'B3DAcceleratorPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:41'! testBMPReadWriterPlugin self internalPlugin: 'BMPReadWriterPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:41'! testDropPlugin self internalPlugin: 'DropPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:41'! testFFTPlugin self internalPlugin: 'FFTPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:41'! testFilePlugin self internalPlugin: 'FilePlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:42'! testFloatArrayPlugin self internalPlugin: 'FloatArrayPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:42'! testFontPlugin self internalPlugin: 'FontPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:42'! testGeniePlugin self internalPlugin: 'GeniePlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:42'! testIntegerPokerPlugin self internalPlugin: 'IntegerPokerPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:42'! testJPEGReadWriter2Plugin self internalPlugin: 'JPEGReadWriter2Plugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:43'! testJPEGReaderPlugin self internalPlugin: 'JPEGReaderPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:43'! testJoystickTabletPlugin self internalPlugin: 'JoystickTabletPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:43'! testKlattPlugin self internalPlugin: 'Klatt'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:43'! testLargeIntegersPlugin self internalPlugin: 'LargeIntegers'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:43'! testMIDIPlugin self internalPlugin: 'MIDIPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:43'! testMatrix2x3Plugin self internalPlugin: 'Matrix2x3Plugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:44'! testMiscPrimitivePlugin self internalPlugin: 'MiscPrimitivePlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:44'! testMpeg3Plugin self internalPlugin: 'Mpeg3Plugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:44'! testRePlugin self internalPlugin: 'RePlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:44'! testSecurityPlugin self internalPlugin: 'SecurityPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:44'! testSerialPlugin self internalPlugin: 'SerialPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:44'! testSocketPlugin self internalPlugin: 'SocketPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:45'! testSoundCodecPrims self internalPlugin: 'SoundCodecPrims'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:45'! testSoundGenerationPlugin self internalPlugin: 'SoundGenerationPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:45'! testSoundPlugin self internalPlugin: 'SoundPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:41'! testSqueak3DPlugin self internalPlugin: 'Squeak3D'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:46'! testSqueakFFIPrims self externalPlugin: 'SqueakFFIPrims'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:45'! testStarSqueakPlugin self internalPlugi n: 'StarSqueakPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:45'! testSurfacePlugin self internalPlugin: 'SurfacePlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 01:12'! testUUIDPlugin self internalPlugin: 'UUIDPlugin'.! ! !Win32StandardVMConfigurationTest methodsFor: 'as yet unclassified' stamp: 'ar 3/9/2003 00:41'! testZipPlugin self internalPlugin: 'ZipPlugin'.! ! |