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: Ned K. <ne...@us...> - 2004-03-30 22:38:20
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/BerkeleyDbPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11319/platforms/unix/plugins/BerkeleyDbPlugin Added Files: Tag: ned-branch Makefile.inc acinclude.m4 Log Message: Automake 1.7 compatibility changes. Added plugins: - BerkeleyDbPlugin (Stephen Pair) - FT2Plugin (Arjen van Elteren, mods by Ned Konz) - SpreadPlugin (Ned Konz) Added diagnostics and aioDisable for invalid sockets in sqUnixSocket.c --- NEW FILE: Makefile.inc --- PLIBS = -ldb-4 XINCLUDES = -I/usr/include [includes] --- NEW FILE: acinclude.m4 --- # AC_PLUGIN_CHECK_LIB(db4,db_create) AC_CHECK_HEADERS(db.h) AC_TRY_LINK(#include "db.h", void *xx = (void*)(&db_create);, [plibs="${plibs} db"], AC_MSG_RESULT([******** disabling BerkeleyDbPlugin due to missing libraries]) disabled_plugins="${disabled_plugins} BerkeleyDbPlugin") |
|
From: Ned K. <ne...@us...> - 2004-03-30 22:38:20
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/FT2Plugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11319/platforms/unix/plugins/FT2Plugin Added Files: Tag: ned-branch Makefile.in acinclude.m4 Log Message: Automake 1.7 compatibility changes. Added plugins: - BerkeleyDbPlugin (Stephen Pair) - FT2Plugin (Arjen van Elteren, mods by Ned Konz) - SpreadPlugin (Ned Konz) Added diagnostics and aioDisable for invalid sockets in sqUnixSocket.c --- NEW FILE: Makefile.in --- # default Makefile for Unix Squeak plugins [make_cfg] [make_plg] FREETYPE_CONFIG = [freetype_config] XINCLUDES = [includes] `$(FREETYPE_CONFIG) --cflags` OBJS = [targets] TARGET = [target] PLIBS = [plibs] # `$(FREETYPE_CONFIG) --libs` [make_inc] $(TARGET) : $(OBJS) Makefile $(LINK) $(TARGET) $(OBJS) $(PLIBS) [make_targets] .force : --- NEW FILE: acinclude.m4 --- if test x$freetype_exec_prefix != x ; then freetype_args="$freetype_args --exec-prefix=$freetype_exec_prefix" if test x${FREETYPE_CONFIG+set} != xset ; then FREETYPE_CONFIG=$freetype_exec_prefix/bin/freetype-config fi fi if test x$freetype_prefix != x ; then freetype_args="$freetype_args --prefix=$freetype_prefix" if test x${FREETYPE_CONFIG+set} != xset ; then FREETYPE_CONFIG=$freetype_prefix/bin/freetype-config fi fi AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) no_freetype="" if test "$FREETYPE_CONFIG" = "no" ; then AC_MSG_ERROR([ *** Unable to find FreeType2 library (http://www.freetype.org/) ]) fi AC_PLUGIN_CHECK_LIB(freetype,FT_Library_Version) AC_PLUGIN_DEFINE_UNQUOTED(freetype_config,$FREETYPE_CONFIG) |
|
From: Ned K. <ne...@us...> - 2004-03-30 22:38:20
|
Update of /cvsroot/squeak/squeak/platforms/unix/npsqueak In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11319/platforms/unix/npsqueak Modified Files: Tag: ned-branch Makefile Log Message: Automake 1.7 compatibility changes. Added plugins: - BerkeleyDbPlugin (Stephen Pair) - FT2Plugin (Arjen van Elteren, mods by Ned Konz) - SpreadPlugin (Ned Konz) Added diagnostics and aioDisable for invalid sockets in sqUnixSocket.c Index: Makefile =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/npsqueak/Makefile,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -C2 -d -r1.5 -r1.5.2.1 *** Makefile 23 Aug 2003 11:20:55 -0000 1.5 --- Makefile 30 Mar 2004 22:26:38 -0000 1.5.2.1 *************** *** 13,17 **** imgdir= /usr/local/lib/squeak SQ_DIR= /usr/local/lib/squeak ! VM_VERSION= 3.2-5devel libdir= $(imgdir)/$(VM_VERSION) --- 13,17 ---- imgdir= /usr/local/lib/squeak SQ_DIR= /usr/local/lib/squeak ! VM_VERSION= 3.6g-2 libdir= $(imgdir)/$(VM_VERSION) |
|
From: Ned K. <ne...@us...> - 2004-03-30 22:38:19
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/SpreadPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11319/platforms/Cross/plugins/SpreadPlugin Added Files: Tag: ned-branch SpreadPlugin.h Log Message: Automake 1.7 compatibility changes. Added plugins: - BerkeleyDbPlugin (Stephen Pair) - FT2Plugin (Arjen van Elteren, mods by Ned Konz) - SpreadPlugin (Ned Konz) Added diagnostics and aioDisable for invalid sockets in sqUnixSocket.c --- NEW FILE: SpreadPlugin.h --- /* Spread Plugin common functions */ /* Spread header */ #include <sp.h> struct SpreadConnection { int mbox; int semaIndex; int sessionID; }; typedef struct SpreadConnection SpreadConnection; typedef char groups_name[MAX_GROUP_NAME]; typedef char const cgroups_name[MAX_GROUP_NAME]; int sqSpreadInit(void); int sqSpreadShutdown(void); /* all of the following functions return 0 on success, or error code on failure */ /* returns error code, fills in s and groupBuf */ int sqSpreadConnect(SpreadConnection *s, /*OUT*/ const char *daemonName, int daemonNameSize, const char *privateName, int privateNameSize, int wantsGroupMsgs, char groupBuf[MAX_GROUP_NAME], /*OUT*/ int semaIndex); /* returns error code */ int sqSpreadDisconnect(SpreadConnection * s); /* returns msg length (0..n) or error code (<0) */ int sqSpreadReceive(SpreadConnection const * s, int *serviceType, /*OUT*/ char *sender, /*OUT*/ int maxGroups, int *numberOfGroups, /*OUT*/ char *groups, /*OUT*//* numberOfGroups*MAX_GROUP_NAME long */ int16 *messageType, /*OUT*/ int *endianMismatch, /*OUT*/ int messageLength, char *message, /*OUT*/ int drop); int sqSpreadError(int n); /* returns number of bytes sent or error code (<0) */ /* service_type is one of: UNRELIABLE_MESS RELIABLE_MESS FIFO_MESS CAUSAL_MESS AGREED_MESS SAFE_MESS possibly or'd with SELF_DISCARD if desired. */ int sqSpreadMultigroupMulticast(SpreadConnection const *s, int service_type, int num_groups, char const *groups, int mess_type, int mess_len, char const *mess); /* return error (<0), nothing (0), or bytes available (>0) */ int sqSpreadPoll(SpreadConnection const *s); /* return 0 on success, or error (<0) */ int sqSpreadJoin(SpreadConnection const *s, char const* group, int groupLength); /* return 0 on success, or error (<0) */ int sqSpreadLeave(SpreadConnection const *s, char const* group, int groupLength); /* return 1 if connection is still valid */ int sqSpreadIsValid(SpreadConnection const *s); |
|
From: Ned K. <ne...@us...> - 2004-03-30 22:38:19
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11319/platforms/Cross/plugins/B3DAcceleratorPlugin Modified Files: Tag: ned-branch sqOpenGLRenderer.h Log Message: Automake 1.7 compatibility changes. Added plugins: - BerkeleyDbPlugin (Stephen Pair) - FT2Plugin (Arjen van Elteren, mods by Ned Konz) - SpreadPlugin (Ned Konz) Added diagnostics and aioDisable for invalid sockets in sqUnixSocket.c Index: sqOpenGLRenderer.h =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin/sqOpenGLRenderer.h,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -C2 -d -r1.3 -r1.3.2.1 *** sqOpenGLRenderer.h 13 May 2003 21:53:25 -0000 1.3 --- sqOpenGLRenderer.h 30 Mar 2004 22:26:37 -0000 1.3.2.1 *************** *** 65,69 **** /* define forceFlush if we should fflush() before closing file */ ! #define forceFlush 1 /* Note: Print this stuff into a file in case we lock up*/ --- 65,69 ---- /* define forceFlush if we should fflush() before closing file */ ! #define forceFlush 0 /* Note: Print this stuff into a file in case we lock up*/ |
|
From: John M M. <jo...@us...> - 2004-03-03 04:57:22
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/plugins/PrintJobPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24390/squeak/platforms/Mac OS/plugins/PrintJobPlugin Modified Files: PrintJobPlugin.pbproj.sit Log Message: Update to latest xcode build process Index: PrintJobPlugin.pbproj.sit =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/plugins/PrintJobPlugin/PrintJobPlugin.pbproj.sit,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsbNCZam and /tmp/cvs52SpB6 differ |
|
From: John M M. <jo...@us...> - 2004-03-03 04:56:59
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/plugins/Mpeg3Plugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24303/squeak/platforms/Mac OS/plugins/Mpeg3Plugin Modified Files: mpeglibAudioVideo.pbproj.sit Log Message: upate to xcode 1.x, use -fast for compiler optimization Index: mpeglibAudioVideo.pbproj.sit =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/plugins/Mpeg3Plugin/mpeglibAudioVideo.pbproj.sit,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsk2bgDB and /tmp/cvsLNtfT4 differ |
|
From: Ned K. <ne...@us...> - 2004-02-21 22:05:08
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/FT2Plugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20215/unix/plugins/FT2Plugin Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/plugins/FT2Plugin added to the repository --> Using per-directory sticky tag `ned-branch' |
|
From: Ned K. <ne...@us...> - 2004-02-21 21:46:17
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16275/platforms/Cross/plugins/B3DAcceleratorPlugin Modified Files: Tag: ned-branch sqOpenGLRenderer.c Log Message: Added ERROR_CHECK around glSwapBuffers Index: sqOpenGLRenderer.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin/sqOpenGLRenderer.c,v retrieving revision 1.9 retrieving revision 1.9.2.1 diff -C2 -d -r1.9 -r1.9.2.1 *** sqOpenGLRenderer.c 1 Sep 2003 23:05:55 -0000 1.9 --- sqOpenGLRenderer.c 21 Feb 2004 21:34:07 -0000 1.9.2.1 *************** *** 390,395 **** --- 390,397 ---- { struct glRenderer *renderer = glRendererFromHandle(handle); + ERROR_CHECK_1("(before glSwapBuffers)"); if(!renderer || !glMakeCurrentRenderer(renderer)) return 0; DPRINTF(5, (fp, "### Swapping renderer buffers\n")); + ERROR_CHECK_1("(before glSwapBuffers)"); glSwapBuffers(renderer); ERROR_CHECK; |
|
From: Ned K. <ne...@us...> - 2004-02-21 21:33:26
|
Update of /cvsroot/squeak/squeak/platforms/Cross/vm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13644/platforms/Cross/vm Modified Files: Tag: ned-branch sqVirtualMachine.h Log Message: added Tim's new v6 change for isArray() Index: sqVirtualMachine.h =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Cross/vm/sqVirtualMachine.h,v retrieving revision 1.4 retrieving revision 1.4.6.1 diff -C2 -d -r1.4 -r1.4.6.1 *** sqVirtualMachine.h 5 May 2002 18:56:07 -0000 1.4 --- sqVirtualMachine.h 21 Feb 2004 21:21:02 -0000 1.4.6.1 *************** *** 10,14 **** #ifndef VM_PROXY_MINOR /* Increment the following number if you add functions at the end */ ! #define VM_PROXY_MINOR 5 #endif --- 10,14 ---- #ifndef VM_PROXY_MINOR /* Increment the following number if you add functions at the end */ ! #define VM_PROXY_MINOR 6 #endif *************** *** 191,194 **** --- 191,199 ---- #endif + #if VM_PROXY_MINOR > 5 + /* new for 1.6 */ + int (*isArray)(int oop); + #endif + } VirtualMachine; |
|
From: Ned K. <ne...@us...> - 2004-02-21 21:31:58
|
Update of /cvsroot/squeak/squeak/platforms/Cross/vm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13409/platforms/Cross/vm Modified Files: Tag: ned-branch sqVirtualMachine.c Log Message: Added Tim's new v6 change for isArray() Index: sqVirtualMachine.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Cross/vm/sqVirtualMachine.c,v retrieving revision 1.2 retrieving revision 1.2.4.1 diff -C2 -d -r1.2 -r1.2.4.1 *** sqVirtualMachine.c 18 Dec 2001 21:57:03 -0000 1.2 --- sqVirtualMachine.c 21 Feb 2004 21:19:33 -0000 1.2.4.1 *************** *** 65,68 **** --- 65,69 ---- int isWordsOrBytes(int oop); int includesBehaviorThatOf(int aClass, int aSuperClass); + int isArray(int oop); /* InterpreterProxy methodsFor: 'converting' */ *************** *** 310,313 **** --- 311,317 ---- #endif + #if VM_PROXY_MINOR > 5 + VM->isArray = isArray; + #endif return VM; } |
|
From: Ned K. <ne...@us...> - 2004-02-21 21:13:58
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/BerkeleyDbPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10325/unix/plugins/BerkeleyDbPlugin Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/plugins/BerkeleyDbPlugin added to the repository --> Using per-directory sticky tag `ned-branch' |
|
From: Ned K. <ne...@us...> - 2004-02-21 21:13:56
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/BerkeleyDbPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10325/Cross/plugins/BerkeleyDbPlugin Log Message: Directory /cvsroot/squeak/squeak/platforms/Cross/plugins/BerkeleyDbPlugin added to the repository --> Using per-directory sticky tag `ned-branch' |
|
From: Ned K. <ne...@us...> - 2004-02-21 20:28:10
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/SpreadPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1163/SpreadPlugin Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/plugins/SpreadPlugin added to the repository --> Using per-directory sticky tag `ned-branch' |
|
From: Ned K. <ne...@us...> - 2004-02-21 20:26:21
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/SpreadPlugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv751/SpreadPlugin Log Message: Directory /cvsroot/squeak/squeak/platforms/Cross/plugins/SpreadPlugin added to the repository --> Using per-directory sticky tag `ned-branch' |
|
From: John M M. <jo...@us...> - 2004-02-19 04:59:29
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31978/squeak/platforms/Mac OS/vm/Documentation Modified Files: readme Log Message: 3.7.2bx Changes for xCode Index: readme =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation/readme,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** readme 6 Oct 2003 05:13:31 -0000 1.9 --- readme 19 Feb 2004 04:49:26 -0000 1.10 *************** *** 1,3 **** ! Updated Oct 5th, 2003 Building the Squeak Virtual Machine (Aug 6th, 2002) --- 1,3 ---- ! Updated Feb 20th, 2004 Building the Squeak Virtual Machine (Aug 6th, 2002) *************** *** 12,16 **** -- Changes John McIntosh May 19th, 2003 (changeset consolidation into VMMaker). -- Changes John McIntosh July 31th, 2003 3.5.x updates ! -- Changes John McIntosh Oct 5th, 2003 3.6.x updats (Note to readers, it is possible a step was missed, so beware) --- 12,17 ---- -- Changes John McIntosh May 19th, 2003 (changeset consolidation into VMMaker). -- Changes John McIntosh July 31th, 2003 3.5.x updates ! -- Changes John McIntosh Oct 5th, 2003 3.6.x updates ! -- Changes John McIntosh Feb 18th, 2004 3.7.x updates (pending) (xcode changes) (Note to readers, it is possible a step was missed, so beware) *************** *** 18,22 **** Building a Carbon Squeak VM with ProjectBuilder: ! {JMM notes this is building with 10.2.8, and Squeak 3.6 (for croquet)} Overview --- 19,23 ---- Building a Carbon Squeak VM with ProjectBuilder: ! {JMM notes this is building with 10.3.x, and Squeak 3.7 (for croquet)} Overview *************** *** 32,45 **** Step One: Get the Apple Developer Tools (free) ! The current build requires the December 2002 developer tools, or higher. They are available to Online members at the apple developer website. You can get an Online membership for free at: http://developer.apple.com/membership/online.html (Note building with GCC 3.3 produces better code than gcc 3.1 or gcc 2.95, FYI gcc 3.1 produces lousy code) ! ! You might need to use the "sudo /usr/sbin/gcc_select 3" command to pick the GCC 3.3 compiler, although project builder seems to give you a choice (2.x, 3.x) it lies... ! do a "gcc --version" to confirm what you think you are using is what you are using. ! Follow the Apple instructions for building with 3.3 otherwise you will get a back leveled compiler. ! Step One (b): --- 33,42 ---- Step One: Get the Apple Developer Tools (free) ! The current build requires the latest XCode tools. They are available to Online members at the apple developer website. You can get an Online membership for free at: http://developer.apple.com/membership/online.html (Note building with GCC 3.3 produces better code than gcc 3.1 or gcc 2.95, FYI gcc 3.1 produces lousy code) ! Step One (b): *************** *** 65,69 **** Step Three: Build an interpeter ! 0. Grab your 3.6 image, and then install VM Maker 3.6g2 or better, and Ballon 3D. A. Install change sets from the specialChangeSets Folder. --- 62,66 ---- Step Three: Build an interpeter ! 0. Grab your 3.7 image, and then install VM Maker 3.7b1 or better, and Ballon 3D. A. Install change sets from the specialChangeSets Folder. *************** *** 74,93 **** Gnuifier.5.cs - A smalltalk version of the AWK example. ! ! ArraysToGlobalStruct-JMM.1.cs ! FasterCopyLoop-JMM.4.cs ! FasterCopyLoopPart2-JMM.2.cs ! FasterLookupMethod-JMM.1.cs ! MakePrimPointXInternal-JMM.1.cs ! SlightlyFasterActivate-JMM.3.cs B. DoIt: VMMakerTool openInWorld (Ensure you have the latest VMMaker, do an SqueakMap update if unsure) C. Enter the Path to platforms code: (enter path to platforms in step two). If you created an alias to the squeak platform folder, it might come up with for example ! Mac OS X:Users:Shared:Squeak3.6b2:platforms D. Enter the Platform name: (default is fine) "Mac OS" E. Enter the Path for your generates sources (default is fine). It might come up with for example ! Mac OS X:Users:Shared:Squeak3.6b2:src F. Select plugins. (Suggest selecting menu item "make all internal", then drag back the following back to Plugins not built: --- 71,85 ---- Gnuifier.5.cs - A smalltalk version of the AWK example. ! ! ArraysToGlobalStruct-JMM.1.cs - Put arrays in the structure, this fixes some issues with gce in the compiler. B. DoIt: VMMakerTool openInWorld (Ensure you have the latest VMMaker, do an SqueakMap update if unsure) C. Enter the Path to platforms code: (enter path to platforms in step two). If you created an alias to the squeak platform folder, it might come up with for example ! Mac OS X:Users:Shared:Squeak3.7x:platforms D. Enter the Platform name: (default is fine) "Mac OS" E. Enter the Path for your generates sources (default is fine). It might come up with for example ! Mac OS X:Users:Shared:Squeak3.7x:src F. Select plugins. (Suggest selecting menu item "make all internal", then drag back the following back to Plugins not built: *************** *** 125,142 **** D. Drag 'SqueakVMForCarbon.pbproj' to the folder containing the 'platforms' and 'src' folders. ! Step Six: Run ProjectBuilder and build yourself an interpreter A. Double-click the SqueakVMForCarbon.pbproj file ! B. On the left pane, there are some vertically oriented fold-over tabs. ! Click on the "files" tab to see the files ! C. Option-click on the Sources group folder and confirm the files listed can be found. Files which can't be found are listed in red. For any red highlighted files you'll need to resolve where or why the files is/are missing. ! D. On the left pane, there are some vertically oriented fold-over tabs. ! Click the one marked "Targets." ! E. On the left upper pane marked "Targets," select "Squeak VM Opt" ! F. On the left lower pane marked "Build Styles," select "Deployment" ! G. Click on the hammer icon at the top left to build your VM. The final product should live in the build folder, named "Squeak VM Opt" Compare against the offical build to see if it is the same. --- 117,137 ---- D. Drag 'SqueakVMForCarbon.pbproj' to the folder containing the 'platforms' and 'src' folders. + E. Ensure a copy of the files: + Info-NPSqueak__Upgraded_.plist + Info-Squeak_VM_Debug__Upgraded_.plist + Info-Squeak_VM_OPT__Upgraded_.plist + can be found in the folder containing the 'platforms' and 'src' folders. ! Step Six: Run ProjectBuilder and build yourself an interpreter {for xcode 1.1 } A. Double-click the SqueakVMForCarbon.pbproj file ! B. On the left pane, see the SqueakVMForCarbon blue xcode icon. ! Click on it to see the files. Files which can't be found are listed in red. For any red highlighted files you'll need to resolve where or why the files is/are missing. ! c. On the left pane, find the Targets icon. ! d. Select "Squeak VM Opt" ! e. On the upper window area pick "Deployment" (This is the active build style) {This depends on how you have xcode configured} ! f. Click on the hammer icon at the top to build your VM. The final product should live in the build folder, named "Squeak VM Opt" Compare against the offical build to see if it is the same. *************** *** 145,151 **** warning: passing arg 1 of `sqImageFileStartLocation' makes integer from pointer without a cast) Run a tinyBenchmark benchmark against your VM, versus the production VM to confirm yours is simular in performance. - John suggests: "You might need to switch back to the Squeak VM Debug and back to ensure the setting actually are taken. - There seems to be a bug where although you've got the Opt build picked it really builds a non-optimized debug version." - You will know this because performance will be off by 30-40%. Step Seven: Download and print your Squeak VM Developer's Certificate --- 140,143 ---- *************** *** 196,200 **** --------------------------------------------------- ! Older Notes The platform specific files are sqMacXXX.c, totaling about more than 2000 lines of code when this document was originally written. All other code is written to standard --- 188,193 ---- --------------------------------------------------- ! Older Notes (Below) ! The platform specific files are sqMacXXX.c, totaling about more than 2000 lines of code when this document was originally written. All other code is written to standard |
|
From: John M M. <jo...@us...> - 2004-02-19 04:51:51
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30838/squeak/platforms/Mac OS/vm/Documentation Modified Files: 3.7.1 Release Notes.rtf Log Message: 3.7.2b1 changes Index: 3.7.1 Release Notes.rtf =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation/3.7.1 Release Notes.rtf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** 3.7.1 Release Notes.rtf 7 Jan 2004 05:21:36 -0000 1.1 --- 3.7.1 Release Notes.rtf 19 Feb 2004 04:41:48 -0000 1.2 *************** *** 7,11 **** \f0\fs24 \cf0 Mac VM 3.7.1 mach-o build for Carbon, and build for Classic. Support for Croquet, and support for Safari\ ! Jan 6th, 2004 (3.7.1b2)\ Still yet to do, in future versions.\ Verify that file delete rename etc works on aliases, not the targets. (Yawn, someday)\ --- 7,11 ---- \f0\fs24 \cf0 Mac VM 3.7.1 mach-o build for Carbon, and build for Classic. Support for Croquet, and support for Safari\ ! Feb 18th, 2004 (3.7.2b1)\ Still yet to do, in future versions.\ Verify that file delete rename etc works on aliases, not the targets. (Yawn, someday)\ *************** *** 14,25 **** 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\ You need 3.5.3b1 for Safari plugin support\ ! 3.6.1 seems a fine VM, from what people tell me, but now we've 3.7.1...\ \ 3.7.1b2 \ JPEG READER WRITER\ --- 14,30 ---- Notes About previous VM.\ 3.2.6 VM classic have an issue when the tickcount clock goes over 0x7FFFFFFF, about 24 days. \ ! This exhibits itself when Squeak won't accept user input, or allow you to switch under os 9 or earlier after 24 days,\ ! or starting a Squeak image hangs during the initial screen painting.\ ! Restarting the mac solved these problems. Force quitting Squeak 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\ You need 3.5.3b1 for Safari plugin support\ ! 3.6.1 seems a fine VM, from what people tell me, but now we've 3.7.2...\ \ + 3.7.2b1 Changes for NPSqueak to fix issues with full screen mode under Safari 1.2 (V125) \ + Usage of VMMaker3-7b2 to build interp.c\ + Unicode values now come up from the classic VM versus the historical (1984) keycode values, this makes Tweak work.\ + \ 3.7.1b2 \ JPEG READER WRITER\ *************** *** 35,41 **** \f0 \ 3.7.0b2 \ - \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural ! \f1 \cf0 a) You can alter the application's Info.plist by setting the SqueakEncodingType using the ICANA readable names\ \ macintosh - >macRoman \ --- 40,45 ---- \f0 \ 3.7.0b2 \ ! \f1 a) You can alter the application's Info.plist by setting the SqueakEncodingType using the ICANA readable names\ \ macintosh - >macRoman \ *************** *** 45,59 **** c) Usage of VMMaker3-7a2.\ d) Special change sets: make primitive point x/y internal, and slightly faster activate.\ - \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural ! \f0 \cf0 \ 3.7.0b1 \ - \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural ! \f1 \cf0 Changes for the "m17n" package fromTetsuya HAYASHI <{\field{\*\fldinst{HYPERLINK "mailto:te...@st..."}}{\fldrslt te...@st...}}> so one can type Kanji characters.\ \ - \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural ! \f0 \cf0 3.6.1b7 \ SqMacWindow.c Fix for new rending code when used with 2.8 or earlier images, mouse clicks reported in wrong place\ \ --- 49,60 ---- c) Usage of VMMaker3-7a2.\ d) Special change sets: make primitive point x/y internal, and slightly faster activate.\ ! \f0 \ 3.7.0b1 \ ! \f1 Changes for the "m17n" package fromTetsuya HAYASHI <{\field{\*\fldinst{HYPERLINK "mailto:te...@st..."}}{\fldrslt te...@st...}}> so one can type Kanji characters.\ \ ! \f0 3.6.1b7 \ SqMacWindow.c Fix for new rending code when used with 2.8 or earlier images, mouse clicks reported in wrong place\ \ |
|
From: John M M. <jo...@us...> - 2004-02-19 04:44:53
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29818/squeak/platforms/Mac OS/vm Modified Files: sqMacUIEvents.c Log Message: 3.7.2b1 Changes for NPSqueak and full screen fixes for Safari 1.2(V125). Add unicode values for classic mac instead of returning historical keycode numbers. Index: sqMacUIEvents.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacUIEvents.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** sqMacUIEvents.c 7 Jan 2004 05:25:39 -0000 1.20 --- sqMacUIEvents.c 19 Feb 2004 04:34:50 -0000 1.21 *************** *** 23,26 **** --- 23,27 ---- * 3.6.2b3 Nov 25th, 2003 JMM Tetsuya HAYASHI <te...@st...> supplied multiple unicode extraction * 3.7.0bx Nov 24th, 2003 JMM gCurrentVMEncoding + * 3.7.1b3 Jan 29th, 2004 JMM return unicode for classic version versus virtual keyboard code notes: see incontent, I think it's a bug, click to bring to foreground signls mousedown. bad... *************** *** 474,477 **** --- 475,493 ---- } + static int MacRomanToUnicode[256] = + {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, + 25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, + 47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68, + 69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, + 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109, + 110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126, + 127,196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232, + 234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224, + 176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177, + 8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172, + 8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221, + 8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222, + 8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710, + 732,175,728,729,730,184,733,731,711}; int recordKeyboardEvent(EventRecord *theEvent, int keyType) { *************** *** 496,500 **** /* now the key code */ /* press code must differentiate */ ! evt->charCode = (theEvent->message & keyCodeMask) >> 8; evt->pressCode = keyType; evt->modifiers = modifierBits >> 3; --- 512,519 ---- /* now the key code */ /* press code must differentiate */ ! // Jan 2004, changed for TWEAK instead of doing virtual keycode return unicode ! // Unicode generated from CFSTring ! //evt->charCode = (theEvent->message & keyCodeMask) >> 8; ! evt->charCode = MacRomanToUnicode[asciiChar]; evt->pressCode = keyType; evt->modifiers = modifierBits >> 3; |
|
From: John M M. <jo...@us...> - 2004-02-19 04:44:45
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29784/squeak/platforms/Mac OS/vm Modified Files: sqMacNSPlugin.c Log Message: 3.7.2b1 Changes for NPSqueak and full screen fixes for Safari 1.2(V125). Add unicode values for classic mac instead of returning historical keycode numbers. Index: sqMacNSPlugin.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacNSPlugin.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** sqMacNSPlugin.c 7 Jan 2004 05:24:10 -0000 1.15 --- sqMacNSPlugin.c 19 Feb 2004 04:34:42 -0000 1.16 *************** *** 168,172 **** extern int thisSession; /* from sqFilePrims.c: */ #if defined ( __APPLE__ ) && defined ( __MACH__ ) ! pthread_mutex_t gEventDrawLock; extern pthread_mutex_t gEventQueueLock; extern TMTask gTMTask; --- 168,172 ---- extern int thisSession; /* from sqFilePrims.c: */ #if defined ( __APPLE__ ) && defined ( __MACH__ ) ! pthread_mutex_t gEventDrawLock,gEventNSAccept; extern pthread_mutex_t gEventQueueLock; extern TMTask gTMTask; *************** *** 587,593 **** Boolean windowActive=true; GrafPtr rememberFrontWindow=null; ! Boolean rememberWindowOnce=true; #if defined ( __APPLE__ ) && defined ( __MACH__ ) pthread_mutex_unlock(&gEventDrawLock); #endif --- 587,594 ---- Boolean windowActive=true; GrafPtr rememberFrontWindow=null; ! Boolean rememberWindowOnce=true; #if defined ( __APPLE__ ) && defined ( __MACH__ ) + pthread_mutex_lock(&gEventNSAccept); pthread_mutex_unlock(&gEventDrawLock); #endif *************** *** 611,614 **** --- 612,618 ---- exitRequested = false; ExitCleanup(); + #if defined ( __APPLE__ ) && defined ( __MACH__ ) + pthread_mutex_unlock(&gEventNSAccept); + #endif return false; } *************** *** 616,619 **** --- 620,626 ---- if ((thisInstance == nil) || (eventPtr == NULL)) { /* no instance or no event; do nothing */ + #if defined ( __APPLE__ ) && defined ( __MACH__ ) + pthread_mutex_unlock(&gEventNSAccept); + #endif return false; } *************** *** 691,701 **** break; ! case activateEvt: ! ! ! break; ! ! ! case nullEvent: { if(inputSemaphoreIndex && windowActive) { --- 698,702 ---- break; ! case nullEvent : { if(inputSemaphoreIndex && windowActive) { *************** *** 714,743 **** } break; } } if (needsUpdate && (netscapeWindow != nil) && (memory)) { if (getFullScreenFlag()) { ! BeginUpdate((WindowPtr) eventPtr->message); } ! fullDisplayUpdate(); /* ask VM to call ioShowDisplay */ ! ! if (getFullScreenFlag()) { ! EndUpdate((WindowPtr) eventPtr->message); ! } ! needsUpdate = false; } if(postMessageHook) postMessageHook(eventPtr); ! if (ignoreFirstEvent && getFullScreenFlag()) { ignoreFirstEvent = false; #if defined ( __APPLE__ ) && defined ( __MACH__ ) pthread_mutex_lock(&gEventDrawLock); #endif ! return true; ! } ! if (getFullScreenFlag()) { ok = WaitNextEvent(everyEvent, &theEvent,1,null); eventPtr = &theEvent; SqueakYieldToAnyThread(); --- 715,783 ---- } break; + case activateEvt: + #if defined ( __APPLE__ ) && defined ( __MACH__ ) + { + /* serious hack to show safari after hiding, + issue with safari 1.1.1 not seeing activate when full screen terminates */ + + ProcessSerialNumber psn = { 0, kCurrentProcess }; + OSStatus err; + if (!IsProcessVisible(&psn)) { + err = ShowHideProcess (&psn,true); + SetFrontProcess(&psn); + } + } + pthread_mutex_lock(&gEventDrawLock); + pthread_mutex_unlock(&gEventNSAccept); + #endif + return false; + break; } } if (needsUpdate && (netscapeWindow != nil) && (memory)) { + needsUpdate = false; if (getFullScreenFlag()) { ! //BeginUpdate((WindowPtr) eventPtr->message); ! BeginUpdate(FrontWindow()); ! fullDisplayUpdate(); /* ask VM to call ioShowDisplay */ ! EndUpdate(FrontWindow()); ! //EndUpdate((WindowPtr) eventPtr->message); ! pthread_mutex_lock(&gEventDrawLock); ! pthread_mutex_unlock(&gEventNSAccept); ! return true; } + else { + fullDisplayUpdate(); /* ask VM to call ioShowDisplay */ + } + if (!getFullScreenFlag()) { + ProcessSerialNumber psn = { 0, kCurrentProcess }; + OSStatus err; + err = ShowHideProcess (&psn,true); + waitAFewMilliseconds(); ! #if defined ( __APPLE__ ) && defined ( __MACH__ ) ! pthread_mutex_lock(&gEventDrawLock); ! pthread_mutex_unlock(&gEventNSAccept); ! #endif ! return false; ! } } if(postMessageHook) postMessageHook(eventPtr); ! /* JMM HUH if (ignoreFirstEvent && getFullScreenFlag()) { ignoreFirstEvent = false; #if defined ( __APPLE__ ) && defined ( __MACH__ ) pthread_mutex_lock(&gEventDrawLock); + pthread_mutex_unlock(&gEventNSAccept); #endif ! return false; ! } */ ! if (getFullScreenFlag()) { ! pthread_mutex_lock(&gEventDrawLock); ! pthread_mutex_unlock(&gEventNSAccept); ok = WaitNextEvent(everyEvent, &theEvent,1,null); + pthread_mutex_unlock(&gEventDrawLock); + pthread_mutex_lock(&gEventNSAccept); eventPtr = &theEvent; SqueakYieldToAnyThread(); *************** *** 748,751 **** --- 788,792 ---- #if defined ( __APPLE__ ) && defined ( __MACH__ ) pthread_mutex_lock(&gEventDrawLock); + pthread_mutex_unlock(&gEventNSAccept); #endif return true; *************** *** 1183,1186 **** --- 1224,1228 ---- dominantGDevice = getDominateDevice(stWindow,&windRect); #endif + setFullScreenFlag(true); //JMM Moved before to test BeginFullScreen (&gRestorableStateForScreen, dominantGDevice, *************** *** 1190,1194 **** nil, fullScreenAllowEvents); - setFullScreenFlag(true); stWindow = gAFullscreenWindow; gFullScreenNPPort.port = GetWindowPort(gAFullscreenWindow); --- 1232,1235 ---- *************** *** 1217,1220 **** --- 1258,1264 ---- int ioSetFullScreenRestore() { + ProcessSerialNumber psn = { 0, kCurrentProcess }; + OSErr err; + if (gRestorableStateForScreen != nil) { EndFullScreen(gRestorableStateForScreen,nil); *************** *** 1224,1227 **** --- 1268,1274 ---- netscapeWindow = oldNetscapeWindow; stWindow = oldStWindow; + + err = ShowHideProcess (&psn,false); + waitAFewMilliseconds(); } } *************** *** 1870,1872 **** --- 1917,2006 ---- err = pthread_mutex_unlock(&sleepLock); } + + /* LowRunAppleScript compiles and runs an AppleScript + provided as text in the buffer pointed to by text. textLength + bytes will be compiled from this buffer and run as an AppleScript + using all of the default environment and execution settings. If + resultData is not NULL, then the result returned by the execution + command will be returned as typeChar in this descriptor record + (or typeNull if there is no result information). If the function + returns errOSAScriptError, then resultData will be set to a + descriptive error message describing the error (if one is + available). */ + static OSStatus LowRunAppleScript(const void* text, long textLength, + AEDesc *resultData) { + ComponentInstance theComponent; + AEDesc scriptTextDesc; + OSStatus err; + OSAID scriptID, resultID; + + /* set up locals to a known state */ + theComponent = NULL; + AECreateDesc(typeNull, NULL, 0, &scriptTextDesc); + scriptID = kOSANullScript; + resultID = kOSANullScript; + + /* open the scripting component */ + theComponent = OpenDefaultComponent(kOSAComponentType, + typeAppleScript); + if (theComponent == NULL) { err = paramErr; goto bail; } + + /* put the script text into an aedesc */ + err = AECreateDesc(typeChar, text, textLength, &scriptTextDesc); + if (err != noErr) goto bail; + + /* compile the script */ + err = OSACompile(theComponent, &scriptTextDesc, + kOSAModeNull, &scriptID); + if (err != noErr) goto bail; + + /* run the script */ + err = OSAExecute(theComponent, scriptID, kOSANullScript, + kOSAModeNull, &resultID); + + /* collect the results - if any */ + if (resultData != NULL) { + AECreateDesc(typeNull, NULL, 0, resultData); + if (err == errOSAScriptError) { + OSAScriptError(theComponent, kOSAErrorMessage, + typeChar, resultData); + } else if (err == noErr && resultID != kOSANullScript) { + OSADisplay(theComponent, resultID, typeChar, + kOSAModeNull, resultData); + } + } + bail: + AEDisposeDesc(&scriptTextDesc); + if (scriptID != kOSANullScript) OSADispose(theComponent, scriptID); + if (resultID != kOSANullScript) OSADispose(theComponent, resultID); + if (theComponent != NULL) CloseComponent(theComponent); + return err; + } + + + /* SimpleRunAppleScript compiles and runs the AppleScript in + the c-style string provided as a parameter. The result returned + indicates the success of the operation. */ + static OSStatus SimpleRunAppleScript(const char* theScript) { + return LowRunAppleScript(theScript, strlen(theScript), NULL); + } + + static pokeAtSafari(void) { + SimpleRunAppleScript( + "tell application \"Finder\"\n" + " activate\n" + " select folder \"Documents\" of startup disk\n" + " open selection\n" + "end tell"); + } + + /* example: + SimpleRunAppleScript( + "tell application \"Finder\"\n" + " activate\n" + " select folder \"Documents\" of startup disk\n" + " open selection\n" + "end tell"); + */ + #endif \ No newline at end of file |
|
From: John M M. <jo...@us...> - 2004-02-19 04:44:36
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29750/squeak/platforms/Mac OS/vm Modified Files: sqMacMain.c Log Message: 3.7.2b1 Changes for NPSqueak and full screen fixes for Safari 1.2(V125). Add unicode values for classic mac instead of returning historical keycode numbers. Index: sqMacMain.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacMain.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** sqMacMain.c 2 Dec 2003 04:52:46 -0000 1.19 --- sqMacMain.c 19 Feb 2004 04:34:34 -0000 1.20 *************** *** 92,96 **** #if I_AM_CARBON_EVENT #include <pthread.h> ! extern pthread_mutex_t gEventQueueLock,gEventUILock,gEventDrawLock,gSleepLock; extern pthread_cond_t gEventUILockCondition,gSleepLockCondition; --- 92,96 ---- #if I_AM_CARBON_EVENT #include <pthread.h> ! extern pthread_mutex_t gEventQueueLock,gEventUILock,gEventDrawLock,gEventNSAccept,gSleepLock; extern pthread_cond_t gEventUILockCondition,gSleepLockCondition; *************** *** 321,324 **** --- 321,325 ---- pthread_mutex_init(&gEventUILock, NULL); pthread_mutex_init(&gEventDrawLock, NULL); + pthread_mutex_init(&gEventNSAccept, NULL); pthread_cond_init(&gEventUILockCondition,NULL); err = pthread_create(&gSqueakPThread,null,(void *) interpret, null); *************** *** 609,612 **** --- 610,614 ---- pthread_mutex_destroy(&gEventUILock); pthread_mutex_destroy(&gEventDrawLock); + pthread_mutex_destroy(&gEventNSAccept); pthread_mutex_destroy(&gSleepLock); pthread_cond_destroy(&gEventUILockCondition); |
|
From: John M M. <jo...@us...> - 2004-02-19 04:23:27
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets/Old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26777/squeak/platforms/Mac OS/vm/specialChangeSets/Old Added Files: SlightlyFasterActivate-JMM.3.cs Log Message: Previously used before VMMaker3-7b1.sar --- NEW FILE: SlightlyFasterActivate-JMM.3.cs --- 'From Squeak3.6beta of ''4 July 2003'' [latest update: #5373] on 7 August 2003 at 2:27:37 pm'! "Change Set: SlightlyFasterActivate-JMM Date: 6 August 2003 Author: jo...@sm... Alter activateNewMethod to simplify common subexpressions for the compiler and to simplify the two for loops so gcc can produce better assembler. This results in a 2% faster send/sec rate for powerpc"! !Interpreter methodsFor: 'message sending' stamp: 'JMM 8/6/2003 09:48'! activateNewMethod | newContext methodHeader initialIP tempCount nilOop where | methodHeader _ self headerOf: newMethod. newContext _ self allocateOrRecycleContext: (methodHeader bitAnd: LargeContextBit). initialIP _ ((LiteralStart + (self literalCountOfHeader: methodHeader)) * 4) + 1. tempCount _ (methodHeader >> 19) bitAnd: 16r3F. "Assume: newContext will be recorded as a root if necessary by the call to newActiveContext: below, so we can use unchecked stores." where _ (self cCoerce: newContext to: 'char *') + BaseHeaderSize. self longAt: where + (SenderIndex << 2) put: activeContext. self longAt: where + (InstructionPointerIndex << 2) put: (self integerObjectOf: initialIP). self longAt: where + (StackPointerIndex << 2) put: (self integerObjectOf: tempCount). self longAt: where + (MethodIndex << 2) put: newMethod. "Copy the reciever and arguments..." 0 to: argumentCount do: [:i | self longAt: where + ((ReceiverIndex+i) << 2) put: (self stackValue: argumentCount-i)]. "clear remaining temps to nil in case it has been recycled" nilOop _ nilObj. argumentCount+1+ReceiverIndex to: tempCount+ReceiverIndex do: [:i | self longAt: where + (i << 2) put: nilOop]. self pop: argumentCount + 1. reclaimableContextCount _ reclaimableContextCount + 1. self newActiveContext: newContext.! ! !Interpreter methodsFor: 'message sending' stamp: 'JMM 8/7/2003 14:27'! internalActivateNewMethod | methodHeader newContext tempCount argCount2 needsLarge where | self inline: true. methodHeader _ self headerOf: newMethod. needsLarge _ methodHeader bitAnd: LargeContextBit. (needsLarge = 0 and: [freeContexts ~= NilContext]) ifTrue: [newContext _ freeContexts. freeContexts _ self fetchPointer: 0 ofObject: newContext] ifFalse: ["Slower call for large contexts or empty free list" self externalizeIPandSP. newContext _ self allocateOrRecycleContext: needsLarge. self internalizeIPandSP]. tempCount _ (methodHeader >> 19) bitAnd: 16r3F. "Assume: newContext will be recorded as a root if necessary by the call to newActiveContext: below, so we can use unchecked stores." where _ (self cCoerce: newContext to: 'char *') + BaseHeaderSize. self longAt: where + (SenderIndex << 2) put: activeContext. self longAt: where + (InstructionPointerIndex << 2) put: (self integerObjectOf: (((LiteralStart + (self literalCountOfHeader: methodHeader)) * 4) + 1)). self longAt: where + (StackPointerIndex << 2) put: (self integerObjectOf: tempCount). self longAt: where + (MethodIndex << 2) put: newMethod. "Copy the reciever and arguments..." argCount2 _ argumentCount. 0 to: argCount2 do: [:i | self longAt: where + ((ReceiverIndex+i) << 2) put: (self internalStackValue: argCount2-i)]. "clear remaining temps to nil in case it has been recycled" methodHeader _ nilObj. "methodHeader here used just as faster (register?) temp" argCount2+1+ReceiverIndex to: tempCount+ReceiverIndex do: [:i | self longAt: where + (i << 2) put: methodHeader]. self internalPop: argCount2 + 1. reclaimableContextCount _ reclaimableContextCount + 1. self internalNewActiveContext: newContext. ! ! |
|
From: John M M. <jo...@us...> - 2004-02-19 04:23:20
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets/Old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26765/squeak/platforms/Mac OS/vm/specialChangeSets/Old Added Files: MakePrimPointXInternal-JMM.1.cs Log Message: Previously used before VMMaker3-7b1.sar --- NEW FILE: MakePrimPointXInternal-JMM.1.cs --- 'From Squeak3.6beta of ''4 July 2003'' [latest update: #5331] on 9 July 2003 at 12:01:38 am'! "Change Set: MakePrimPointXInternal-JMM Date: 9 July 2003 Author: jo...@sm... Also rearranged the primitivePointX/Y logic to interpret() internalize"! !Interpreter methodsFor: 'contexts' stamp: 'jmm 7/8/2003 15:46'! internalUnPop: nItems localSP _ localSP + (nItems*4)! ! !Interpreter methodsFor: 'common selector sends' stamp: 'jmm 7/8/2003 15:57'! bytecodePrimPointX successFlag _ true. self primitivePointX. successFlag ifTrue: [^ self fetchNextBytecode "success"]. messageSelector _ self specialSelector: 30. argumentCount _ 0. self normalSend! ! !Interpreter methodsFor: 'common selector sends' stamp: 'jmm 7/8/2003 15:57'! bytecodePrimPointY successFlag _ true. self primitivePointY. successFlag ifTrue: [^ self fetchNextBytecode "success"]. messageSelector _ self specialSelector: 31. argumentCount _ 0. self normalSend! ! !Interpreter methodsFor: 'object access primitives' stamp: 'jmm 7/8/2003 15:53'! primitivePointX | rcvr | self inline: true. rcvr _ self internalStackTop. self internalPop: 1. self assertClassOf: rcvr is: (self splObj: ClassPoint). successFlag ifTrue: [self internalPush: (self fetchPointer: XIndex ofObject: rcvr)] ifFalse: [self internalUnPop: 1]! ! !Interpreter methodsFor: 'object access primitives' stamp: 'jmm 7/8/2003 15:53'! primitivePointY | rcvr | self inline: true. rcvr _ self internalStackTop. self internalPop: 1. self assertClassOf: rcvr is: (self splObj: ClassPoint). successFlag ifTrue: [self internalPush: (self fetchPointer: YIndex ofObject: rcvr)] ifFalse: [self internalUnPop: 1]! ! |
|
From: John M M. <jo...@us...> - 2004-02-19 04:23:13
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets/Old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26752/squeak/platforms/Mac OS/vm/specialChangeSets/Old Added Files: FasterLookupMethod-JMM.1.cs Log Message: Previously used before VMMaker3-7b1.sar --- NEW FILE: FasterLookupMethod-JMM.1.cs --- 'From Squeak3.6beta of ''4 July 2003'' [latest update: #5373] on 6 August 2003 at 12:05:30 pm'! "Change Set: FasterLookupMethod-JMM Date: 6 August 2003 Author: jo...@sm... Change lookupMethodInDictionary: to force nilObj into a local register for compare, and don't compare the selector to nilObj (the failure case) before comparing to the wanted selector. This usually removes an extra if statement check since the failure case is 1/20 of the found case"! !Interpreter methodsFor: 'message sending' stamp: 'JMM 8/5/2003 22:14'! lookupMethodInDictionary: dictionary "This method lookup tolerates integers as Dictionary keys to support execution of images in which Symbols have been compacted out" | length index mask wrapAround nextSelector methodArray nilOops| self inline: true. nilOops _ nilObj. length _ self fetchWordLengthOf: dictionary. mask _ length - SelectorStart - 1. (self isIntegerObject: messageSelector) ifTrue: [index _ (mask bitAnd: (self integerValueOf: messageSelector)) + SelectorStart] ifFalse: [index _ (mask bitAnd: (self hashBitsOf: messageSelector)) + SelectorStart]. "It is assumed that there are some nils in this dictionary, and search will stop when one is encountered. However, if there are no nils, then wrapAround will be detected the second time the loop gets to the end of the table." wrapAround _ false. [true] whileTrue: [nextSelector _ self fetchPointer: index ofObject: dictionary. nextSelector=messageSelector ifTrue: [ methodArray _ self fetchPointer: MethodArrayIndex ofObject: dictionary. newMethod _ self fetchPointer: index - SelectorStart ofObject: methodArray. "Check if newMethod is a CompiledMethod." (self formatOf: newMethod) >= 12 ifTrue:[ primitiveIndex _ self primitiveIndexOf: newMethod. primitiveIndex > MaxPrimitiveIndex ifTrue:[ "If primitiveIndex is out of range, set to zero before putting in cache. This is equiv to primFail, and avoids the need to check on every send." primitiveIndex _ 0. ]. ] ifFalse:[ "indicate that this is no compiled method" primitiveIndex := 248. ]. ^true ]. nextSelector=nilOops ifTrue: [^false]. index _ index + 1. index = length ifTrue: [wrapAround ifTrue: [^false]. wrapAround _ true. index _ SelectorStart]]! ! |
|
From: John M M. <jo...@us...> - 2004-02-19 04:23:06
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets/Old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26729/squeak/platforms/Mac OS/vm/specialChangeSets/Old Added Files: FasterCopyLoopPart2-JMM.2.cs Log Message: Previously used before VMMaker3-7b1.sar --- NEW FILE: FasterCopyLoopPart2-JMM.2.cs --- 'From Squeak3.6beta of ''4 July 2003'' [latest update: #5331] on 29 July 2003 at 2:36:26 pm'! !BitBltSimulation methodsFor: 'inner loop' stamp: 'jmm 7/15/2003 20:44'! copyLoopNoSource "Faster copyLoop when source not used. hDir and vDir are both positive, and perload and skew are unused" | halftoneWord mergeWord mergeFnwith destWord destIndexLocal nWordsMinusOne | self inline: false. self var: #mergeFnwith declareC: 'int (*mergeFnwith)(int, int)'. mergeFnwith _ self cCoerce: (opTable at: combinationRule + 1) to: 'int (*)(int, int)'. mergeFnwith. "null ref for compiler" destIndexLocal _ destIndex. nWordsMinusOne _ nWords - 1. 1 to: bbH do: [:i | "here is the vertical loop" noHalftone ifTrue: [halftoneWord _ AllOnes] ifFalse: [halftoneWord _ self halftoneAt: dy + i - 1]. "Note: the horizontal loop has been expanded into three parts for speed:" "This first section requires masking of the destination store..." destMask _ mask1. destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: halftoneWord with: destWord. destWord _ (destMask bitAnd: mergeWord) bitOr: (destWord bitAnd: destMask bitInvert32). self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + 4. "This central horizontal loop requires no store masking" destMask _ AllOnes. combinationRule = 3 ifTrue: ["Special inner loop for STORE" destWord _ halftoneWord. 2 to: nWordsMinusOne do: [:word | self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + 4]] ifFalse: ["Normal inner loop does merge" 2 to: nWordsMinusOne do: [:word | "Normal inner loop does merge" destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: halftoneWord with: destWord. self dstLongAt: destIndexLocal put: mergeWord. destIndexLocal _ destIndexLocal + 4]]. "This last section, if used, requires masking of the destination store..." nWords > 1 ifTrue: [destMask _ mask2. destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: halftoneWord with: destWord. destWord _ (destMask bitAnd: mergeWord) bitOr: (destWord bitAnd: destMask bitInvert32). self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + 4]. destIndexLocal _ destIndexLocal + destDelta]! ! |
|
From: John M M. <jo...@us...> - 2004-02-19 04:23:03
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/specialChangeSets/Old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26673/squeak/platforms/Mac OS/vm/specialChangeSets/Old Added Files: FasterCopyLoop-JMM.4.cs Log Message: Previously used before VMMaker3-7b1.sar --- NEW FILE: FasterCopyLoop-JMM.4.cs --- 'From Squeak3.5 of ''11 April 2003'' [latest update: #5180] on 29 June 2003 at 11:03:57 pm'! "Change Set: FasterCopyLoop-JMM Date: 29 June 2003 Author: jo...@sm... Make some of the variables in the inner loop of copyLoop, copyLoopNoSource, and copyLoopPixMap locals versus instance variables to improve performance on the powerpc"! !BitBltSimulation methodsFor: 'inner loop' stamp: 'JMM 6/29/2003 23:01'! copyLoop "This version of the inner loop assumes noSource = false." | prevWord thisWord skewWord halftoneWord mergeWord hInc y unskew skewMask notSkewMask mergeFnwith destWord skewLocal sourceIndexLocal destIndexLocal vDirLocal hDirLocal nWordsMinusOne | self inline: false. self var: #mergeFnwith declareC: 'int (*mergeFnwith)(int, int)'. mergeFnwith _ self cCoerce: (opTable at: combinationRule + 1) to: 'int (*)(int, int)'. mergeFnwith. "null ref for compiler" hInc _ hDir * 4. skewLocal _ skew. sourceIndexLocal _ sourceIndex. destIndexLocal _ destIndex. vDirLocal _ vDir. hDirLocal _ hDir. nWordsMinusOne _ nWords - 1. "Byte delta" "degenerate skew fixed for Sparc. 10/20/96 ikp" skewLocal == -32 ifTrue: [skewLocal _ unskew _ skewMask _ 0] ifFalse: [skewLocal < 0 ifTrue: [unskew _ skewLocal + 32. skewMask _ AllOnes << (0 - skewLocal)] ifFalse: [skewLocal = 0 ifTrue: [unskew _ 0. skewMask _ AllOnes] ifFalse: [unskew _ skewLocal - 32. skewMask _ AllOnes >> skewLocal]]]. notSkewMask _ skewMask bitInvert32. noHalftone ifTrue: [halftoneWord _ AllOnes. halftoneHeight _ 0] ifFalse: [halftoneWord _ self halftoneAt: 0]. y _ dy. 1 to: bbH do: [:i | "here is the vertical loop" halftoneHeight > 1 ifTrue: ["Otherwise, its always the same" halftoneWord _ self halftoneAt: y. y _ y + vDirLocal]. preload ifTrue: ["load the 64-bit shifter" prevWord _ self srcLongAt: sourceIndexLocal. sourceIndexLocal _ sourceIndexLocal + hInc] ifFalse: [prevWord _ 0]. "Note: the horizontal loop has been expanded into three parts for speed:" "This first section requires masking of the destination store..." destMask _ mask1. thisWord _ self srcLongAt: sourceIndexLocal. "pick up next word" sourceIndexLocal _ sourceIndexLocal + hInc. skewWord _ ((prevWord bitAnd: notSkewMask) bitShift: unskew) bitOr: ((thisWord bitAnd: skewMask) bitShift: skewLocal). "32-bit rotate" prevWord _ thisWord. destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: (skewWord bitAnd: halftoneWord) with: destWord. destWord _ (destMask bitAnd: mergeWord) bitOr: (destWord bitAnd: destMask bitInvert32). self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + hInc. "This central horizontal loop requires no store masking" destMask _ AllOnes. combinationRule = 3 ifTrue: [skewLocal = 0 & (halftoneWord = AllOnes) ifTrue: ["Very special inner loop for STORE mode with no skew -- just move words" hDirLocal = -1 ifTrue: ["Woeful patch: revert to older code for hDir = -1" 2 to: nWordsMinusOne do: [:word | thisWord _ self srcLongAt: sourceIndexLocal. sourceIndexLocal _ sourceIndexLocal + hInc. self dstLongAt: destIndexLocal put: thisWord. destIndexLocal _ destIndexLocal + hInc]] ifFalse: [2 to: nWordsMinusOne do: [:word | "Note loop starts with prevWord loaded (due to preload)" self dstLongAt: destIndexLocal put: prevWord. destIndexLocal _ destIndexLocal + hInc. prevWord _ self srcLongAt: sourceIndexLocal. sourceIndexLocal _ sourceIndexLocal + hInc]]] ifFalse: ["Special inner loop for STORE mode -- no need to call merge" 2 to: nWordsMinusOne do: [:word | thisWord _ self srcLongAt: sourceIndexLocal. sourceIndexLocal _ sourceIndexLocal + hInc. skewWord _ ((prevWord bitAnd: notSkewMask) bitShift: unskew) bitOr: ((thisWord bitAnd: skewMask) bitShift: skewLocal). "32-bit rotate" prevWord _ thisWord. self dstLongAt: destIndexLocal put: (skewWord bitAnd: halftoneWord). destIndexLocal _ destIndexLocal + hInc]]] ifFalse: [2 to: nWordsMinusOne do: [:word | "Normal inner loop does merge:" thisWord _ self srcLongAt: sourceIndexLocal. "pick up next word" sourceIndexLocal _ sourceIndexLocal + hInc. skewWord _ ((prevWord bitAnd: notSkewMask) bitShift: unskew) bitOr: ((thisWord bitAnd: skewMask) bitShift: skewLocal). "32-bit rotate" prevWord _ thisWord. mergeWord _ self mergeFn: (skewWord bitAnd: halftoneWord) with: (self dstLongAt: destIndexLocal). self dstLongAt: destIndexLocal put: mergeWord. destIndexLocal _ destIndexLocal + hInc]]. "This last section, if used, requires masking of the destination store..." nWords > 1 ifTrue: [destMask _ mask2. thisWord _ self srcLongAt: sourceIndexLocal. "pick up next word" sourceIndexLocal _ sourceIndexLocal + hInc. skewWord _ ((prevWord bitAnd: notSkewMask) bitShift: unskew) bitOr: ((thisWord bitAnd: skewMask) bitShift: skewLocal). "32-bit rotate" destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: (skewWord bitAnd: halftoneWord) with: destWord. destWord _ (destMask bitAnd: mergeWord) bitOr: (destWord bitAnd: destMask bitInvert32). self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + hInc]. sourceIndexLocal _ sourceIndexLocal + sourceDelta. destIndexLocal _ destIndexLocal + destDelta]! ! !BitBltSimulation methodsFor: 'inner loop' stamp: 'JMM 6/29/2003 23:01'! copyLoopNoSource "Faster copyLoop when source not used. hDir and vDir are both positive, and perload and skew are unused" | halftoneWord mergeWord mergeFnwith destWord destIndexLocal | self inline: false. self var: #mergeFnwith declareC: 'int (*mergeFnwith)(int, int)'. mergeFnwith _ self cCoerce: (opTable at: combinationRule + 1) to: 'int (*)(int, int)'. mergeFnwith. "null ref for compiler" destIndexLocal _ destIndex. 1 to: bbH do: [:i | "here is the vertical loop" noHalftone ifTrue: [halftoneWord _ AllOnes] ifFalse: [halftoneWord _ self halftoneAt: dy + i - 1]. "Note: the horizontal loop has been expanded into three parts for speed:" "This first section requires masking of the destination store..." destMask _ mask1. destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: halftoneWord with: destWord. destWord _ (destMask bitAnd: mergeWord) bitOr: (destWord bitAnd: destMask bitInvert32). self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + 4. "This central horizontal loop requires no store masking" destMask _ AllOnes. combinationRule = 3 ifTrue: ["Special inner loop for STORE" destWord _ halftoneWord. 2 to: nWords - 1 do: [:word | self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + 4]] ifFalse: ["Normal inner loop does merge" 2 to: nWords - 1 do: [:word | "Normal inner loop does merge" destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: halftoneWord with: destWord. self dstLongAt: destIndexLocal put: mergeWord. destIndexLocal _ destIndexLocal + 4]]. "This last section, if used, requires masking of the destination store..." nWords > 1 ifTrue: [destMask _ mask2. destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: halftoneWord with: destWord. destWord _ (destMask bitAnd: mergeWord) bitOr: (destWord bitAnd: destMask bitInvert32). self dstLongAt: destIndexLocal put: destWord. destIndexLocal _ destIndexLocal + 4]. destIndexLocal _ destIndexLocal + destDelta]! ! !BitBltSimulation methodsFor: 'inner loop' stamp: 'JMM 6/29/2003 23:01'! copyLoopPixMap "This version of the inner loop maps source pixels to a destination form with different depth. Because it is already unweildy, the loop is not unrolled as in the other versions. Preload, skew and skewMask are all overlooked, since pickSourcePixels delivers its destination word already properly aligned. Note that pickSourcePixels could be copied in-line at the top of the horizontal loop, and some of its inits moved out of the loop." "ar 12/7/1999: The loop has been rewritten to use only one pickSourcePixels call. The idea is that the call itself could be inlined. If we decide not to inline pickSourcePixels we could optimize the loop instead." | skewWord halftoneWord mergeWord scrStartBits nSourceIncs startBits endBits sourcePixMask destPixMask mergeFnwith nPix srcShift dstShift destWord words srcShiftInc dstShiftInc dstShiftLeft mapperFlags destIndexLocal | self inline: false. self var: #mergeFnwith declareC: 'int (*mergeFnwith)(int, int)'. mergeFnwith _ self cCoerce: (opTable at: combinationRule + 1) to: 'int (*)(int, int)'. mergeFnwith. "null ref for compiler" destIndexLocal _ destIndex. "Additional inits peculiar to unequal source and dest pix size..." sourcePPW _ 32 // sourceDepth. sourcePixMask _ maskTable at: sourceDepth. destPixMask _ maskTable at: destDepth. mapperFlags _ cmFlags bitAnd: ColorMapNewStyle bitInvert32. sourceIndex _ sourceBits + (sy * sourcePitch) + (sx // sourcePPW * 4). scrStartBits _ sourcePPW - (sx bitAnd: sourcePPW - 1). bbW < scrStartBits ifTrue: [nSourceIncs _ 0] ifFalse: [nSourceIncs _ bbW - scrStartBits // sourcePPW + 1]. sourceDelta _ sourcePitch - (nSourceIncs * 4). "Note following two items were already calculated in destmask setup!!" startBits _ destPPW - (dx bitAnd: destPPW - 1). endBits _ (dx + bbW - 1 bitAnd: destPPW - 1) + 1. bbW < startBits ifTrue: [startBits _ bbW]. "Precomputed shifts for pickSourcePixels" srcShift _ (sx bitAnd: sourcePPW - 1) * sourceDepth. dstShift _ (dx bitAnd: destPPW - 1) * destDepth. srcShiftInc _ sourceDepth. dstShiftInc _ destDepth. dstShiftLeft _ 0. sourceMSB ifTrue: [srcShift _ 32 - sourceDepth - srcShift. srcShiftInc _ 0 - srcShiftInc]. destMSB ifTrue: [dstShift _ 32 - destDepth - dstShift. dstShiftInc _ 0 - dstShiftInc. dstShiftLeft _ 32 - destDepth]. 1 to: bbH do: [:i | "here is the vertical loop" "*** is it possible at all that noHalftone == false? ***" noHalftone ifTrue: [halftoneWord _ AllOnes] ifFalse: [halftoneWord _ self halftoneAt: dy + i - 1]. "setup first load" srcBitShift _ srcShift. dstBitShift _ dstShift. destMask _ mask1. nPix _ startBits. "Here is the horizontal loop..." words _ nWords. ["pick up the word" skewWord _ self pickSourcePixels: nPix flags: mapperFlags srcMask: sourcePixMask destMask: destPixMask srcShiftInc: srcShiftInc dstShiftInc: dstShiftInc. "align next word to leftmost pixel" dstBitShift _ dstShiftLeft. destMask = AllOnes ifTrue: ["avoid read-modify-write" mergeWord _ self mergeFn: (skewWord bitAnd: halftoneWord) with: (self dstLongAt: destIndexLocal). self dstLongAt: destIndexLocal put: (destMask bitAnd: mergeWord)] ifFalse: ["General version using dest masking" destWord _ self dstLongAt: destIndexLocal. mergeWord _ self mergeFn: (skewWord bitAnd: halftoneWord) with: (destWord bitAnd: destMask). destWord _ (destMask bitAnd: mergeWord) bitOr: (destWord bitAnd: destMask bitInvert32). self dstLongAt: destIndexLocal put: destWord]. destIndexLocal _ destIndexLocal + 4. words = 2 ifTrue: ["e.g., is the next word the last word?" "set mask for last word in this row" destMask _ mask2. nPix _ endBits] ifFalse: ["use fullword mask for inner loop" destMask _ AllOnes. nPix _ destPPW]. (words _ words - 1) = 0] whileFalse. "--- end of inner loop ---" sourceIndex _ sourceIndex + sourceDelta. destIndexLocal _ destIndexLocal + destDelta]! ! |