Levente Uzonyi uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.238.mcz
==================== Summary ====================
Name: Collections-ul.238
Author: ul
Time: 2 December 2009, 5:54:41 am
UUID: 86a69c95-3e4b-5d4a-adc6-36e3f1039500
Ancestors: Collections-ul.237
- added #lf and #crlf to WriteStream (like #cr)
- updated String >> #withInternetLineEndings
=============== Diff against Collections-ul.237 ===============
Item was added:
+ ----- Method: WriteStream>>crlf (in category 'character writing') -----
+ crlf
+ "Append a line feed character to the receiver."
+
+ self nextPut: Character cr; nextPut: Character lf!
Item was added:
+ ----- Method: WriteStream>>lf (in category 'character writing') -----
+ lf
+ "Append a line feed character to the receiver."
+
+ self nextPut: Character lf!
Item was changed:
----- Method: String>>withInternetLineEndings (in category 'internet') -----
withInternetLineEndings
+ "change line endings from CR's and LF's to CRLF's. This is probably in prepration for sending a string over the Internet"
- "change line endings from CR's to CRLF's. This is probably in prepration for sending a string over the Internet"
^self class
new: self size * 16 // 15 "provisions for CR-LF pairs"
streamContents: [ :stream |
self lineIndicesDo: [:start :endWithoutDelimiters :end |
stream nextPutAll: (self copyFrom: start to: endWithoutDelimiters).
endWithoutDelimiters = end ifFalse: [
+ stream crlf ] ] ]!
- stream cr; nextPut: Character lf ] ] ]!
David T. Lewis uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-dtl.318.mcz
==================== Summary ====================
Name: Kernel-dtl.318
Author: dtl
Time: 2 December 2009, 9:22:36 am
UUID: 0153a88f-b3b4-48e6-9dfa-a6acd42915c3
Ancestors: Kernel-nice.317
Remove Object>>couldOpenInMorphic and eliminate "world hacking" method category.
=============== Diff against Kernel-nice.317 ===============
Item was removed:
- ----- Method: Object>>couldOpenInMorphic (in category 'world hacking') -----
- couldOpenInMorphic
-
- "is there an obvious morphic world in which to open a new morph?"
-
- ^World notNil or: [ActiveWorld notNil]!
David T. Lewis uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-dtl.189.mcz
==================== Summary ====================
Name: System-dtl.189
Author: dtl
Time: 2 December 2009, 9:17:54 am
UUID: 3785764e-2a0f-4582-b416-f2903c553df7
Ancestors: System-ar.188
Move folder selection dialogs from Project to MVCProject and MorphicProject to eliminate MVC/Morphic dependency in Project. But note that PluggableFileList used for MVC is incorrectly categorized in package Morphic.
Change Imports>>viewImages to use "Project current isMorphic" rather than "self couldOpenInMorphic".
=============== Diff against System-ar.188 ===============
Item was changed:
----- Method: Imports>>viewImages (in category 'images') -----
viewImages
"Open up a special Form inspector on the dictionary of graphical imports."
"Imports default viewImages"
| widgetClass |
imports size isZero ifTrue:
[^ self inform:
'The ImageImports repository is currently empty,
so there is nothing to view at this time. You can
use a file list to import graphics from external files
into Imports, and once you have done that,
you will find this command more interesting.'].
+ widgetClass := Project current isMorphic
- widgetClass := self couldOpenInMorphic
ifTrue: [GraphicalDictionaryMenu]
ifFalse: [FormInspectView].
widgetClass openOn: imports withLabel: 'Graphical Imports'
!
Item was changed:
----- Method: Project>>findAFolderToLoadProjectFrom (in category 'file in/out') -----
findAFolderToLoadProjectFrom
+ ^ CurrentProject findAFolderForProject: self label: 'Select a folder on a server:'
+ !
- self couldOpenInMorphic ifTrue: [
- ^FileList2 modalFolderSelectorForProjectLoad
- ] ifFalse: [
- ^PluggableFileList getFolderDialog openLabel: 'Select a folder on a server:'
- ]!
Item was added:
+ ----- Method: Project>>findAFolderForProject:label: (in category 'utilities') -----
+ findAFolderForProject: aProject label: dialogLabel
+ "Find a folder for saving or loading a project"
+
+ self subclassResponsibility
+ !
Item was changed:
----- Method: Project>>findAFolderToStoreProjectIn (in category 'file in/out') -----
findAFolderToStoreProjectIn
+ ^ CurrentProject findAFolderForProject: self label: 'Select a folder on a server:'
+ !
- "Alan wants something prettier with a default"
-
- self couldOpenInMorphic ifTrue: [
- ^FileList2 modalFolderSelectorForProject: self
- ] ifFalse: [
- ^PluggableFileList getFolderDialog openLabel: 'Select a folder on a server:'
- ]!
David T. Lewis uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-dtl.260.mcz
==================== Summary ====================
Name: Morphic-dtl.260
Author: dtl
Time: 2 December 2009, 9:12:24 am
UUID: 147a542a-fa6e-43c7-bdd8-3bb000785043
Ancestors: Morphic-dtl.259
Move folder selection dialogs from Project to MVCProject and MorphicProject to eliminate MVC/Morphic dependency in Project.
=============== Diff against Morphic-dtl.259 ===============
Item was added:
+ ----- Method: MorphicProject>>findAFolderForProject:label: (in category 'utilities') -----
+ findAFolderForProject: aProject label: dialogLabel
+ "Find a folder for saving or loading a project"
+
+ ^FileList2 modalFolderSelectorForProject: aProject
+ !
David T. Lewis uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-dtl.74.mcz
==================== Summary ====================
Name: ST80-dtl.74
Author: dtl
Time: 2 December 2009, 9:01:34 am
UUID: dd9c5a97-4bcb-4a2b-b93f-8c7e6db17059
Ancestors: ST80-dtl.73
Move folder selection dialogs from Project to MVCProject and MorphicProject to eliminate MVC/Morphic dependency in Project.
=============== Diff against ST80-dtl.73 ===============
Item was added:
+ ----- Method: MVCProject>>findAFolderForProject:label: (in category 'utilities') -----
+ findAFolderForProject: aProject label: dialogLabel
+ "Find a folder for saving or loading a project"
+
+ ^PluggableFileList getFolderDialog openLabel: dialogLabel
+ !
So you sit there smug about the fact you built a 64bit VM, likely for hosting on your 64bit Linux OS.
{Or the unix one for Darwin, or that new fangled cocoa one}
However it's possible that it's running 1/3 the performance of the 32bit VM.
Did you check? Thought not...
So let's talk.
Are you using the gnuifed version of interp.c? If you don't know, well go check.
Are you using GCC 4.1 or higher?
The interpreter loop is highly tuned monster that suffers from compiler optimization issues. With
careful tuning parms as found in the macintosh xcode build project for the carbon VM using gcc 4.0
you'll get the most optimum performance.
GCC 4.2+ ?
Michael Rueger and I spent a few days attempting to get good performance out of GCC 4.2
WITHOUT success. I think that can account for at least a 33% slowdown.
So where does the other 33% slowdown come from?
Well when we compile the VM in 64bit to use a 32bit image each reference to an oops requires us
to add a 64bit memory start address to the 32bit oops number to resolve to a 64bit memory address.
Unfortunately GCC 4.2 growls, and produces the lousiest code possible to do this.
Maybe higher versions of GCC are better? Anyone care to test?
So some solutions.
(a) Ensure the squeak oops memory block loads within the 0-4GB address space.
See pagezero size for Darwin. Then alter the logic a bit so that sqMemoryBase is zero
and that the squeak memory accessors don't do the add of sqMemoryBase=0 to the oops address.
Although you might have to use GCC 4.2 you'll run 100% faster.
(b) Use the (non-free) Intel compiler
--
===========================================================================
John M. McIntosh <johnmci(a)smalltalkconsulting.com> Twitter: squeaker68882
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
===========================================================================
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2009-December/001939.h…
Name: Kernel-nice.316
Ancestors: Kernel-ar.315
Add the ANSI float characterization methods every other Smalltalk has but Squeak.
Also add #predecessor and #successor.
These changes are already in Pharo.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2009-December/001940.h…
Name: Kernel-nice.317
Ancestors: Kernel-nice.316
A faster successor/predecessor implementation thanks to suggestions of Paolo Bonzini and the help of #ulp (unit of least precision - that is the least significant bit of a Float).
It works well with default IEEE754 rounding mode (round to nearest even). Don't know about alternate modes, but we don't use them right now.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2009-December/001941.h…
Name: KernelTests-nice.114
Ancestors: KernelTests-ar.113
Tests for Float characterization messages
=============================================