Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
June 2014
- 88 participants
- 1258 messages
Re: [Pharo-dev] Spur Squeak Trunk Image Available
by Eliot Miranda
On Thu, Jun 12, 2014 at 10:48 PM, stepharo <stepharo(a)free.fr> wrote:
> Thanks eliot.
> As soon as it is available for Pharo we will try with some large moose
> images.
>
OK, but just so you know I'm not going to do the Pharo bootstrap. I hope
someone in your team will have a go. I'm happy to help but I don't know
Pharo well enough to do this. It's a matter of making sure the Monticelo
packages can be edited. The Squeak code may just work but I wouldn't know.
>
> Stef
>
>
> On 13/6/14 01:41, Eliot Miranda wrote:
>
>> Hi All,
>>
>> it gives me great pleasure to let you know that a spur-format trunk
>> Squeak image is finally available at http://www.mirandabanda.org/
>> files/Cog/SpurImages/. Spur VMs are available at
>> http://www.mirandabanda.org/files/Cog/VM/VM.r2987/.
>>
>> Spur is a new object representation and garbage collector for
>> Squeak/Pharo/Croquet/Newspeak.
>>
>> Features
>> The object representation is significantly simpler than the existing one,
>> and hence permits a lot of JIT optimizations, in particular allocating
>> objects in machine code. This speeds up new, new: et al, but also speeds
>> up blocks because contexts and closures are now allocated in machine code.
>> It also provides immediate characters, so for example accessing wide
>> strings is much faster in Spur, since characters do not have to be
>> instantiated to represent characters with codes greater than 255.
>>
>> The garbage collector has a scavenger and a global scan-mark-compact
>> collector. The scavenger is significantly faster than the existing
>> pointer-reversal scan-mark-compact, hence GC performance is much improved.
>>
>> The memory manager manages old space as a sequence of segments, as
>> opposed to the single contiguous space provided by the existing memory
>> manager. The memory manager grows the heap a segment at a time, and can
>> and will release empty segments back to the host OS after a full GC. Hence
>> Spur is able to grow the heap to the limit of available memory without one
>> having to specify the VM's memory size at start-up.
>>
>> The object representation uses "lazy forwarding" to implement become:,
>> creating copies of objects that are becommed, and forwarding the existing
>> objects to the copies. While Spur still scans the stack zone on become to
>> ensure no forwarding pointers to the receiver exist in stack frames (for
>> check-free push and store instance variable operations), it does not scan
>> the entire heap, catching sends to forwarded objects as part of the normal
>> message send class checks, hence following forwarding pointers lazily, and
>> eliminating forwarders during GC. The existing memory manager does a full
>> memory sweep and compact to implement become. Hence Spur provides the
>> performance advantages of direct pointers while providing a significantly
>> faster become.
>>
>> While Spur uses moving GC (scavenging and compaction on full GC), just
>> like the existing memory manager, Spur supports pinning, the ability to
>> stop an object from moving. Old space objects will not be moved if pinned.
>> Attempting to pin a new space object causes a become, forwarding the new
>> space object to a pinned copy in old space. This allows simpler
>> interfacing with foreign code through the FFI, since one can hand out
>> references to pinned objects in the knowledge that they will not be moved
>> by the GC.
>>
>> Finally Spur supports ephemerons in a simple and direct way, providing
>> pre-mortem per-instance finalization. Although the image-level support
>> needs to be written, it should soon be possible to improve the finalization
>> of entities such as buffered files (ensuring they are flushed before being
>> GCed), etc.
>>
>>
>> Future Work
>> Spur is as yet a work in progress. The 32-bit implementation is usable
>> and appears stable. The major missing component is an incremental
>> scan-mark GC that should eliminate long pauses due to the global
>> scan-mark-compact GC (which is still invoked at snapshot time). I hope to
>> start on this soon. But another key facet of Spur is that the object
>> header format and the sizes of objects are common between 32- and 64-bits.
>> In 32-bit and 64-bit Spur, object bodies are multiples of 8 bytes, so
>> there may be an unused slot at the end of a 32-bit object with an odd
>> number of slots. Hence Spur is close to providing a "true" 64-bit system,
>> one with 61-bit SmallIntegers, and 61-bit SmallFloats (objects with the
>> same precision, but less range that 64-bit Float, done by stealing bits
>> from the exponent field). I look forward to collaborating with Esteban
>> Lorenzano on 64-bit Spur and hope that it will be available early next year.
>>
>>
>> Experience
>> I am of course interested in reports of performance effects. Under
>> certain, hopefully rare circumstances, Spur may actually be slower (one is
>> when the number of processes involved in process switching exceeds the
>> number of stack pages in the stack zone). But my limited experience is
>> that Spur is significantly faster than the existing VM. Please post
>> experiences, both positive and negative.
>>
>> Finally, caveat emptor! This is alpha code. Bugs may result in image
>> corruption. If you do use Spur, please try and back up your work just in
>> case. And if anything does go wrong please let me know, preferrably
>> providing a reproducible case.
>>
>>
>> Enjoy!
>> Eliot Miranda
>>
>
>
>
--
best,
Eliot
June 13, 2014
Re: [Pharo-dev] Performance for Video Games(Woden Video)
by Clément Bera
This is very good.
As Doru said, please show something at Esug. 3D graphics are always very
nice to show.
2014-06-13 6:51 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Very nice!
>
> Will you be showing some of these at ESUG?
>
> Doru
>
>
> On Fri, Jun 13, 2014 at 5:16 AM, Ronie Salgado <roniesalg(a)gmail.com>
> wrote:
>
>> I am working on making a video game engine in Pharo. Recently added a FPS
>> counter and recorded some samples: http://youtu.be/-2ida5Q1mbg .
>>
>> Lets say I was quite surprised, so I have yet a lot more to optimize, but
>> a good trick seems to be making some computation in the GPU.
>>
>> In this video, I show 6 early examples. The water example is still
>> incomplete, missing reflection/refractions, but it shows what happens when
>> I compute the water waves using a shader in the GPU.
>>
>> Please, pay a close attention to the FPS count.
>>
>> BTW, it feels slow because of the screen capture and the tearing is there
>> because I haven't enabled vsync, but I have support for it.
>>
>> Greetings,
>> Ronie Salgado
>>
>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>
June 13, 2014
Re: [Pharo-dev] HowToMakeYourOwnTutorial, how to launch my own?
by Serge Stinckwich
On Thu, Jun 12, 2014 at 3:06 PM, Marc-Philippe Huget <mphuget(a)gmail.com> wrote:
> Hello everybody,
Hi Marc-Philippe,
> I try to do a tutorial for our project and I decided to use ProfStef, so I
> follow the instructions as given in HowToMakeYourOwnTutorial, so
> * no problem to create a class inheriting from AbstractClass
> * creating two protocols lessons and tutorial
> * a method tutorial returning the list of tutorials as an array
> * a method per tutorial
>
> My only problem is regarding running this tutorial
> In ProfStef, we do ProfStef go but here, go is not recognized
> If I change from AbstractTutorial to PharoTutorial, I obviously have go,
> goOn and next but this is not my tutorial
>
> I guess this is a problem of player, but how? Thanks in advance for your
> help
If you want to made a Tutorial, you have to take a look also on the
work of Stephan Eggermont.
He send a message on the ml recently about that:
http://forum.world.st/Support-for-demos-td4742101.html
I'm also interested to use his work, let's try to share.
Regards,
--
Serge Stinckwich
UCBN & UMI UMMISCO 209 (IRD/UPMC)
Every DSL ends up being Smalltalk
http://www.doesnotunderstand.org/
June 13, 2014
Re: [Pharo-dev] HowToMakeYourOwnTutorial, how to launch my own?
by Max Leske
On 12.06.2014, at 15:06, Marc-Philippe Huget <mphuget(a)gmail.com> wrote:
> Hello everybody,
>
> I try to do a tutorial for our project and I decided to use ProfStef, so I follow the instructions as given in HowToMakeYourOwnTutorial, so
> * no problem to create a class inheriting from AbstractClass
> * creating two protocols lessons and tutorial
> * a method tutorial returning the list of tutorials as an array
> * a method per tutorial
>
> My only problem is regarding running this tutorial
> In ProfStef, we do ProfStef go but here, go is not recognized
> If I change from AbstractTutorial to PharoTutorial, I obviously have go, goOn and next but this is not my tutorial
>
> I guess this is a problem of player, but how? Thanks in advance for your help
>
> Regards,
> mph
>
Assuming your new tutorial class is named MyNewTutorial, you simply run
PharoTurorial goOn: MyNewTutorial
And if you want it to be a bit nicer to look at, you can add a #go method on the class side:
MyNewTutorial class compile: 'go
PharoTutorial goOn: selfâ
HTH,
Max
June 13, 2014
Re: [Pharo-dev] [website] new news entry: talk NDC Oslo
by stepharo
Hi doru
did you get problems with the fonts? Because I was wondering why you did
not make them a bit larger.
Stef
On 11/6/14 16:10, Tudor Girba wrote:
> Thanks :).
>
> Just some background information:
>
> As you can see, I used the GTInspector to show the liveliness of the
> system. I actually used the Moose image + some other goodies (like
> Seaside, Postgres connection and a couple of others). I tried this
> story for the first time, and while it still needs a bit of polishing,
> I think it works well on two levels:
> - you can use it as an argument for people to start adopting Pharo as
> a programming platform by emphasizing the liveliness,
> - but at the same time you can use the same demo to show how using
> Pharo can replace scripting, querying and charting tools for common
> tasks like string, file system or db manipulation. This in itself is a
> niche that we can tap on.
>
> The result was that people actually got excited, and the message
> rippled a bit and I got to do several other demos outside the public
> session.
>
> Every step you saw in the demo is setup through a script that gets
> triggered from the world menu. These scripts spawns windows and sets
> the state of objects. It's really simple, but it accelerates the demo.
> My goal is to get a demo that can be repeated by others in other
> contexts out of the box. There are still some setup issues, but once I
> get it done, I will make it more public. In the meantime, if you want
> to contribute or play with it you can use the following script in a
> Moose image:
>
> Gofer new
> smalltalkhubUser: 'PharoExtras' project: 'PostgresV2';
> configuration;
> load.
> (#ConfigurationOfPostgresV2 asClass project version: '2.0-baseline') load.
>
> Gofer new
> smalltalkhubUser: 'Moose' project: 'GToolkit';
> package: 'GT-InspectorExtensions-PostgresV2';
> package: 'GT-InspectorExtensions-XML';
> load.
>
> Gofer new
> smalltalkhubUser: 'RichardWettel' project: 'CodeCity';
> configuration;
> loadDevelopment.
>
> Gofer new
> smalltalkhubUser: 'PharoExtras' project: 'MorphExamplesAndDemos';
> package: 'MorphExamplesAndDemos';
> load.
> Gofer new
> smalltalkhubUser: 'Moose' project: 'GToolkit';
> package: 'GT-InspectorExtensions-MorphExamplesAndDemos';
> load.
>
> Gofer new
> smalltalkhubUser: 'Moose' project: 'GToolkit';
> package: 'GT-Scenery';
> load.
>
>
> Cheers,
> Doru
>
>
>
> On Wed, Jun 11, 2014 at 11:31 AM, kilon alios <kilon.alios(a)gmail.com
> <mailto:kilon.alios@gmail.com>> wrote:
>
> very good presentation that clearly shows the capabilities of
> Pharo. If that does not convince people to use / try pharo,
> nothing will :)
>
>
> On Wed, Jun 11, 2014 at 11:33 AM, Marcus Denker
> <marcus.denker(a)inria.fr <mailto:marcus.denker@inria.fr>> wrote:
>
> Hi,
>
> I added a new entry:
>
> http://pharo.org/news/playing-with-live-objects
>
>
> Marcus
>
>
>
>
>
> --
> www.tudorgirba.com <http://www.tudorgirba.com>
>
> "Every thing has its own flow"
June 13, 2014
Re: [Pharo-dev] Spur Squeak Trunk Image Available
by stepharo
Thanks eliot.
As soon as it is available for Pharo we will try with some large moose
images.
Stef
On 13/6/14 01:41, Eliot Miranda wrote:
> Hi All,
>
> it gives me great pleasure to let you know that a spur-format
> trunk Squeak image is finally available at
> http://www.mirandabanda.org/files/Cog/SpurImages/. Spur VMs are
> available at http://www.mirandabanda.org/files/Cog/VM/VM.r2987/.
>
> Spur is a new object representation and garbage collector for
> Squeak/Pharo/Croquet/Newspeak.
>
> Features
> The object representation is significantly simpler than the existing
> one, and hence permits a lot of JIT optimizations, in particular
> allocating objects in machine code. This speeds up new, new: et al,
> but also speeds up blocks because contexts and closures are now
> allocated in machine code. It also provides immediate characters, so
> for example accessing wide strings is much faster in Spur, since
> characters do not have to be instantiated to represent characters with
> codes greater than 255.
>
> The garbage collector has a scavenger and a global scan-mark-compact
> collector. The scavenger is significantly faster than the existing
> pointer-reversal scan-mark-compact, hence GC performance is much improved.
>
> The memory manager manages old space as a sequence of segments, as
> opposed to the single contiguous space provided by the existing memory
> manager. The memory manager grows the heap a segment at a time, and
> can and will release empty segments back to the host OS after a full
> GC. Hence Spur is able to grow the heap to the limit of available
> memory without one having to specify the VM's memory size at start-up.
>
> The object representation uses "lazy forwarding" to implement become:,
> creating copies of objects that are becommed, and forwarding the
> existing objects to the copies. While Spur still scans the stack zone
> on become to ensure no forwarding pointers to the receiver exist in
> stack frames (for check-free push and store instance variable
> operations), it does not scan the entire heap, catching sends to
> forwarded objects as part of the normal message send class checks,
> hence following forwarding pointers lazily, and eliminating forwarders
> during GC. The existing memory manager does a full memory sweep and
> compact to implement become. Hence Spur provides the performance
> advantages of direct pointers while providing a significantly faster
> become.
>
> While Spur uses moving GC (scavenging and compaction on full GC), just
> like the existing memory manager, Spur supports pinning, the ability
> to stop an object from moving. Old space objects will not be moved if
> pinned. Attempting to pin a new space object causes a become,
> forwarding the new space object to a pinned copy in old space. This
> allows simpler interfacing with foreign code through the FFI, since
> one can hand out references to pinned objects in the knowledge that
> they will not be moved by the GC.
>
> Finally Spur supports ephemerons in a simple and direct way, providing
> pre-mortem per-instance finalization. Although the image-level
> support needs to be written, it should soon be possible to improve the
> finalization of entities such as buffered files (ensuring they are
> flushed before being GCed), etc.
>
>
> Future Work
> Spur is as yet a work in progress. The 32-bit implementation is
> usable and appears stable. The major missing component is an
> incremental scan-mark GC that should eliminate long pauses due to the
> global scan-mark-compact GC (which is still invoked at snapshot time).
> I hope to start on this soon. But another key facet of Spur is that
> the object header format and the sizes of objects are common between
> 32- and 64-bits. In 32-bit and 64-bit Spur, object bodies are
> multiples of 8 bytes, so there may be an unused slot at the end of a
> 32-bit object with an odd number of slots. Hence Spur is close to
> providing a "true" 64-bit system, one with 61-bit SmallIntegers, and
> 61-bit SmallFloats (objects with the same precision, but less range
> that 64-bit Float, done by stealing bits from the exponent field). I
> look forward to collaborating with Esteban Lorenzano on 64-bit Spur
> and hope that it will be available early next year.
>
>
> Experience
> I am of course interested in reports of performance effects. Under
> certain, hopefully rare circumstances, Spur may actually be slower
> (one is when the number of processes involved in process switching
> exceeds the number of stack pages in the stack zone). But my limited
> experience is that Spur is significantly faster than the existing VM.
> Please post experiences, both positive and negative.
>
> Finally, caveat emptor! This is alpha code. Bugs may result in image
> corruption. If you do use Spur, please try and back up your work just
> in case. And if anything does go wrong please let me know,
> preferrably providing a reproducible case.
>
>
> Enjoy!
> Eliot Miranda
June 13, 2014
Re: [Pharo-dev] Performance for Video Games(Woden Video)
by Tudor Girba
Very nice!
Will you be showing some of these at ESUG?
Doru
On Fri, Jun 13, 2014 at 5:16 AM, Ronie Salgado <roniesalg(a)gmail.com> wrote:
> I am working on making a video game engine in Pharo. Recently added a FPS
> counter and recorded some samples: http://youtu.be/-2ida5Q1mbg .
>
> Lets say I was quite surprised, so I have yet a lot more to optimize, but
> a good trick seems to be making some computation in the GPU.
>
> In this video, I show 6 early examples. The water example is still
> incomplete, missing reflection/refractions, but it shows what happens when
> I compute the water waves using a shader in the GPU.
>
> Please, pay a close attention to the FPS count.
>
> BTW, it feels slow because of the screen capture and the tearing is there
> because I haven't enabled vsync, but I have support for it.
>
> Greetings,
> Ronie Salgado
>
--
www.tudorgirba.com
"Every thing has its own flow"
June 13, 2014
Performance for Video Games(Woden Video)
by Ronie Salgado
I am working on making a video game engine in Pharo. Recently added a FPS
counter and recorded some samples: http://youtu.be/-2ida5Q1mbg .
Lets say I was quite surprised, so I have yet a lot more to optimize, but a
good trick seems to be making some computation in the GPU.
In this video, I show 6 early examples. The water example is still
incomplete, missing reflection/refractions, but it shows what happens when
I compute the water waves using a shader in the GPU.
Please, pay a close attention to the FPS count.
BTW, it feels slow because of the screen capture and the tearing is there
because I haven't enabled vsync, but I have support for it.
Greetings,
Ronie Salgado
June 13, 2014
Spur Squeak Trunk Image Available
by Eliot Miranda
Hi All,
it gives me great pleasure to let you know that a spur-format trunk
Squeak image is finally available at
http://www.mirandabanda.org/files/Cog/SpurImages/. Spur VMs are available
at http://www.mirandabanda.org/files/Cog/VM/VM.r2987/.
Spur is a new object representation and garbage collector for
Squeak/Pharo/Croquet/Newspeak.
Features
The object representation is significantly simpler than the existing one,
and hence permits a lot of JIT optimizations, in particular allocating
objects in machine code. This speeds up new, new: et al, but also speeds
up blocks because contexts and closures are now allocated in machine code.
It also provides immediate characters, so for example accessing wide
strings is much faster in Spur, since characters do not have to be
instantiated to represent characters with codes greater than 255.
The garbage collector has a scavenger and a global scan-mark-compact
collector. The scavenger is significantly faster than the existing
pointer-reversal scan-mark-compact, hence GC performance is much improved.
The memory manager manages old space as a sequence of segments, as opposed
to the single contiguous space provided by the existing memory manager.
The memory manager grows the heap a segment at a time, and can and will
release empty segments back to the host OS after a full GC. Hence Spur is
able to grow the heap to the limit of available memory without one having
to specify the VM's memory size at start-up.
The object representation uses "lazy forwarding" to implement become:,
creating copies of objects that are becommed, and forwarding the existing
objects to the copies. While Spur still scans the stack zone on become to
ensure no forwarding pointers to the receiver exist in stack frames (for
check-free push and store instance variable operations), it does not scan
the entire heap, catching sends to forwarded objects as part of the normal
message send class checks, hence following forwarding pointers lazily, and
eliminating forwarders during GC. The existing memory manager does a full
memory sweep and compact to implement become. Hence Spur provides the
performance advantages of direct pointers while providing a significantly
faster become.
While Spur uses moving GC (scavenging and compaction on full GC), just like
the existing memory manager, Spur supports pinning, the ability to stop an
object from moving. Old space objects will not be moved if pinned.
Attempting to pin a new space object causes a become, forwarding the new
space object to a pinned copy in old space. This allows simpler
interfacing with foreign code through the FFI, since one can hand out
references to pinned objects in the knowledge that they will not be moved
by the GC.
Finally Spur supports ephemerons in a simple and direct way, providing
pre-mortem per-instance finalization. Although the image-level support
needs to be written, it should soon be possible to improve the finalization
of entities such as buffered files (ensuring they are flushed before being
GCed), etc.
Future Work
Spur is as yet a work in progress. The 32-bit implementation is usable and
appears stable. The major missing component is an incremental scan-mark GC
that should eliminate long pauses due to the global scan-mark-compact GC
(which is still invoked at snapshot time). I hope to start on this soon.
But another key facet of Spur is that the object header format and the
sizes of objects are common between 32- and 64-bits. In 32-bit and 64-bit
Spur, object bodies are multiples of 8 bytes, so there may be an unused
slot at the end of a 32-bit object with an odd number of slots. Hence Spur
is close to providing a "true" 64-bit system, one with 61-bit
SmallIntegers, and 61-bit SmallFloats (objects with the same precision, but
less range that 64-bit Float, done by stealing bits from the exponent
field). I look forward to collaborating with Esteban Lorenzano on 64-bit
Spur and hope that it will be available early next year.
Experience
I am of course interested in reports of performance effects. Under
certain, hopefully rare circumstances, Spur may actually be slower (one is
when the number of processes involved in process switching exceeds the
number of stack pages in the stack zone). But my limited experience is
that Spur is significantly faster than the existing VM. Please post
experiences, both positive and negative.
Finally, caveat emptor! This is alpha code. Bugs may result in image
corruption. If you do use Spur, please try and back up your work just in
case. And if anything does go wrong please let me know, preferrably
providing a reproducible case.
Enjoy!
Eliot Miranda
June 12, 2014
New Cog & Spur VMs available
by Eliot Miranda
see http://www.mirandabanda.org/files/Cog/VM/VM.r2987/
CogVM binaries as per VMMaker.oscog-eem.769/r2987
platform code:
Type the memory allocators as accepting and answering usqInts to give a
chance
at allocating more than 2Gb.
Use unsigned comparisons when testing if there's sufficient heap space in
readImageFromFile:HeapSize:StartingAt:. Leads to accurate failure message
when
failing to allocate large heap.
Correct syntax of inline assembler for byte and word swap operations in
win32
16-bit displays. Thanks to Nicolai Hess!
sqUnixX11.c:
Include the right X11 include file to pull in the def for XK_equal
(keysym.h vs keysymdef.h).
Don't define BytesPerOop or BaseHeaderSize; these should be taken from
interp.h.
Integrate Philippe Back's fix for numberic keypads on X11;
see https://pharo.fogbugz.com/f/cases/11352/.
Add the XDisplayControlPlugin to the plugins loaded by the image build
script.
Use pthread_atfork to reinstall the heartbeat thread post fork.
Make sure SIGALRM is unblocked if using the interval timer heartbeat on
linux.
Remove RPATH spec from unix builds.
Include the executable name in the crash.dmp report.
Fix stack backtrace printing on Mac & Unix to not segfault when invoked from
error(char *msg) function.
CoInterpreter:
No longer inline CoInterpreter>>pre/postGCAction: for VM profiling.
Fix instantiation of large non-byte objects. The old code for
sufficientSpaceToInstantiate:indexableSize: stupidly subtracted BytesPerWord
instead of ShiftForWord from LongSizeNumBits in determining the max size.
Garbage collect/remap the primTraceLog correctly. If a GC happens
very early in start-up the log circular buffer may not be full and the
existing code assumed it always was.
Add Spur-specific interpreter proxy functions for immediate character and
pinning access. Implement the new Spur interpreterProxy API for
ObjectMemory
(of course pinObject: fails, and isCharacterValue: has a smaller range).
Fix a bug in printing frame flags (order was the wrong way around).
Allow vmParameterAt: 26 put: 0 to disable the heartbeat itimer.
Add AioPlugin to Mac VMs.
Make CoInterpreter>>printFrame: not mislead as to the number of
temps in a block activation.
Change the time primitives to access the time now, not the time as updated
by
the heartbeat (but /don't/ change the time basis for event checking. This
for
performance because use of gettimeofday in e.g. stack overflow can be a
signficant performance overhead. Move the simulated time implementations
(ioSeconds et al) up to StackInterpreter to reduce duplication. Add
ioSecondsNow et al to the platform code to support this.
Fix regression in primitiveUtcWithOffset, answer the correct local time
offset.
Fix ioSecondsNow to use the time now, not the heartbeat time.
Revamp primitiveVMParameter to avoid overflow in values such as total heap
size.
Make statProcessSwitch, statIOProcessEvents, statForceInterruptCheck,
statCheckForEvents, statStackOverflow & statStackPageDivorce 64-bit to avoid
wrapping. Make sure that positive64BitIntegerFor: will not cause a GC just
as
positive32BitIntegerFor: doesn't.
Make primitiveClone cope with variable args, cloning its last
argument. This for the Newspeak VMMirror.
Add primitiveAllObjects, adapted from VMMaker-dtl.339.mcz
Add Nicolas Cellier's bitblt speedups, reference:
Mantis issue 7802: Fast-up BitBlt rgbAdd rule
Mantis issue 7803: Fast-up BitBlt alpha blending rules
Check for valid bitmap in primitivePixelValueAt aka BitBltSimulation>>
primitivePixelValueAtX:y: Fix provided by Nicolas Cellier. Reference Mantis
7799
Avoid including the instructionPointer in the context when marrying the top
frame during divorceAllFrames for voidVMState..If:. (how did this ever
work??)
Fix a bug in BitBltPlugin>>lockSurfaces.
Add the compression prims to the Newspeak VM's ZipPlugin.
Fix roomToPushNArgs:; the Cog VMs can be more lenient because of the use of
a
stack instead of contexts. Fixes some valueWithArguments: failures.
Integrate Nice's improved SmallInteger generated primitives that support
int x float comparison, & hence speed-up int x float comparison enormously.
Integrate VMMaker-dtl.328 (failure of primitiveDisplayString to advance
destX).
Integrate 2792, fix memory leaks in SqueakSSL on unix.
Integrate VMMaker-tpr.325 7247: BitBlt Bug in alphaSourceBlendBits8.
Integrate VMMaker-tpr.326, Fix a single-bit constant error in
BitBltSimulation>>copyBits:Fallback: - change 16r3FFF to 16r7FFF to
correct tallyIntoMap behaviour for Scratch using BenBlt on the Pi.
Restrict at-cache to bytecodePrimAt[Put], eliminating it from
primitive[String]At[Put]. Sionara the explicit noAtCache at:[put:]
machinery
in CoInterpreter now that the atCache is confined to the interpreter's
special
selector at:[put:] bytecodes. Speeds up Stack VM signfiicantly, e.g. a
compile
of Compiler package falls from 1.6s to 1.4s on 2.2GHz Intel Core i7 MacBook
Pro.
Restrict at-cache to bytecodePrimAt[Put], eliminating it from
primitive[String]
At[Put]. Undoes need for fix in VMMaker-oscog.44 of 7 January 2011:
"Fix leaking of objects into the atCache due to ceSend:super:to:numArgs:'s
use of executeNewMethod without always setting messageSelector."
This renders messageSelector and lkupClass ephemeral, since they are live
only
during message lookup and because createActualMessageTo will not cause a GC
these cannot change during message lookup. Hence eliminate them from
markAndTraceInterpreterOops: & mapVMRegisters.
Fix arg count for primPCREExecfromto
Cogit:
Streamline the genPrimReturnEnterCogCodeEnilopmart.
Streamline genExternalizePointersForPrimitiveCall
Have StackToRegisterMappingCogit>>genPushReceiverBytecode
use ReceiverResultReg if it contains self.
Fix a double free bug in unlinkSendsOf:isMNUSelector:. Harmless cuz the
result
is only a bogus count of how many methods freed. Beef up the cog method
integrity check to verify a its methodObject is a CompiledMethod.
Fix bug in unlinkSendsOf:isMNUSelector: (primitiveFlushCacheBySelector)
where old code could free the method of an active frame.
Fix an assert fail in mapFor:bcpc:performUntil:arg: (this for
primitiveClass where the class table reference can be the first map entry).
Fix a bug in Newspeak remapIfObjectRef:pc:hasYoung: with dynamic super
sends which could compute an invalid target method.
Rename pushExplicitOuterSendReceiverBytecode et al to
pushExplicitOuterReceiverBytecode et al. These are not sends.
Fix pc-mapping for NewspeakV4. Dynamic super sends should
/not/ be annotated with IsNSSendCall, but wth the vanilla IsSendCall.
This fixes a bug converting an interpreter activation of a method
with a loop and a dynamic super send to a machine code frame.
For performance, specify that mapFor:[bcpc:]performUntil:arg: are
inlined, eliminating the perform/indirect function call. This adds of
the order of 3% to the size of a cogit.o's text seg so is acceptable.
Print (nil) next to the selector for cog methods with a nil selector.
Fix bug in Cogit>>unlinkSendsOf:isMNUSelector:, used by
primitiveFlushCacheBySelector. The method could leave sends
linked to freed MNU PICs.
--
best,
Eliot
June 12, 2014