Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2011.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2011
Author: eem
Time: 29 November 2016, 1:01:17.478514 pm
UUID: b27de175-8a0d-4fd3-986a-2ac3d678a7bf
Ancestors: VMMaker.oscog-eem.2010
RegisterAllocatingCogit:
Fix captureUnspilledSpillsForSpecialSelectorSend: to update liveRegs and nuke a bogus assert.
=============== Diff against VMMaker.oscog-eem.2010 ===============
Item was changed:
----- Method: RegisterAllocatingCogit>>captureUnspilledSpillsForSpecialSelectorSend: (in category 'bytecode generator support') -----
captureUnspilledSpillsForSpecialSelectorSend: liveRegisterMask
"Since we're allocating values in registers we would like to keep those registers live on the inlined path
and reload registers along the non-inlined send path. But any values that would need to be spilled
along the non-inlined path must be captured before the split so that both paths can join. If we don't
capture the values on the non-inlined path we could access stale values. So for all stack entries that
would be spilled along the non-inlined path, assign them to registers, or spill if none are available."
| i liveRegs reg |
liveRegs := liveRegisterMask.
optStatus isReceiverResultRegLive ifTrue:
[liveRegs := liveRegs + (self registerMaskFor: ReceiverResultReg)].
reg := TempReg. "Anything but NoReg"
i := simStackPtr + 1. "We must spill a contiguous range at the hot top of stack, so we assign coldest first :-("
[reg ~= NoReg and: [i > simSpillBase and: [i > 0]]] whileTrue:
[i := i - 1.
- self deny: ((self simStackAt: i) spilled and: [(self simStackAt: i) type = SSBaseOffset]).
((self simStackAt: i) spilled not
and: [(self simStackAt: i) type = SSBaseOffset]) ifTrue:
[reg := self allocateRegNotConflictingWith: liveRegs.
reg ~= NoReg ifTrue:
+ [(self simStackAt: i) storeToReg: reg.
+ liveRegs := liveRegs bitOr: (self registerMaskFor: reg)]]].
- [(self simStackAt: i) storeToReg: reg]]].
reg = NoReg ifTrue:
[self ssFlushTo: i]!
Hello,
I am working on removing most of windowing code from the VM, and in trying
to unify the platform specific code of the VM. In the MinimalistHeadless
branch of https://github.com/ronsaldo/opensmalltalk-vm I made the following
changes:
- Unified standard CMake building scripts for Unixes. I hate autoconf. I
want to use them in Windows too.
- Refactoring the Unix entry points. I am trying to remove a lot of code
for simplfying stuff.
- Null window driver for true headless.
- Optional SDL2 based traditional display backend for compatibility
reasons, and because the extra Morphic worlds using OSWindow are a bit
unstable.
So far I managed to run a standard Pharo 6 image using this custom VM in
Linux. Windows and Mac are coming next. Hopefully this is going to fix the
problems with duplicated events when using OSWindow in Windows.
I am also planning on making a standard interface for embedding the VM in
an application, at least as a static library. With this new building
system, this seems to be easy to do.
BTW. When I tried the minimalistic Pharo image, in a completely headless
VM, I got the following error:
[ "Ugh .... now this is a biggie - a system that does not support
any of the display depths at all."
Smalltalk
logError:
'Fatal error: This system has no support for any display depth at
all.'
inContext: thisContext.
Smalltalk quitPrimitive "There is no way to continue from here" ] in
DisplayScreen>>findAnyDisplayDepth
DisplayScreen>>findAnyDisplayDepthIfNone:
DisplayScreen>>findAnyDisplayDepth
DisplayScreen>>setExtent:depth:
DisplayScreen class>>startUp
As a workaround, I am doing the following for ioHasDisplayDepth with the
null driver:
sqInt ioHasDisplayDepth(sqInt depth)
{
return true;
}
In DisplayScreen class >> startUp we have the following:
startUp "DisplayScreen startUp"
Display setExtent: self actualScreenSize depth: Display nativeDepth.
Display beDisplay
Does it make sense, to always trying to create a display in startup time?
Best regards,
Ronie
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 21b488e00c991284c8e81835f377107dafd77233
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/21b488e00c991284c8…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2016-11-29 (Tue, 29 Nov 2016)
Changed paths:
M build.linux32ARMv6/newspeak.cog.spur/plugins.ext
M build.linux32ARMv6/newspeak.stack.spur/plugins.ext
M build.linux32x86/newspeak.cog.spur/plugins.ext
M build.linux32x86/newspeak.sista.spur/plugins.ext
M build.linux32x86/newspeak.stack.spur/plugins.ext
M build.linux32x86/nsnac.cog.spur/plugins.ext
M build.linux64x64/newspeak.cog.spur/plugins.ext
M build.linux64x64/newspeak.sista.spur/plugins.ext
M build.linux64x64/newspeak.stack.spur/plugins.ext
M build.linux64x64/nsnac.cog.spur/plugins.ext
Log Message:
-----------
Change a few unix build files from dos to unix lineends
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 68b8d006c7d72878dc0ca742d565631c7ec83893
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/68b8d006c7d72878dc…
Author: Esteban Lorenzano <estebanlm(a)gmail.com>
Date: 2016-11-25 (Fri, 25 Nov 2016)
Changed paths:
M build.win32x86/third-party/libgit2/Makefile.lib
Log Message:
-----------
restore libgit2 v0.23 for win32 (temporary)
Commit: 69dccb55dcb484033f9774f41124e567c57d066b
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/69dccb55dcb484033f…
Author: Esteban Lorenzano <estebanlm(a)gmail.com>
Date: 2016-11-28 (Mon, 28 Nov 2016)
Changed paths:
M build.linux32ARMv6/third-party/libgit2/Makefile.lib
M build.linux32x86/third-party/libgit2/Makefile.lib
M build.linux64x64/third-party/libgit2/Makefile.lib
Log Message:
-----------
restore libgit2 v0.23 for all linux
Commit: 29d76fbc88fc52920e933fea89198474ea474e60
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/29d76fbc88fc52920e…
Author: Esteban Lorenzano <estebanlm(a)gmail.com>
Date: 2016-11-28 (Mon, 28 Nov 2016)
Changed paths:
M .travis_build.sh
M build.win64x64/common/Makefile
M platforms/Cross/plugins/SqueakFFIPrims/sqFFI.h
M platforms/Mac OS/plugins/SqueakFFIPrims/ppc-darwin-Carbon-UI.c
M platforms/Mac OS/plugins/SqueakFFIPrims/sqMacFFIPPC.c
M platforms/Mac OS/plugins/SqueakFFIPrims/sqMacIntel-Win32.c
M platforms/Mac OS/plugins/SqueakFFIPrims/x86-sysv-MacIntel.c
M platforms/iOS/plugins/SqueakFFIPrims/dummyFFI.c
M platforms/iOS/vm/iPhone/plugins/SqueakFFIPrims/dummyFFI.c
M platforms/unix/plugins/LocalePlugin/sqUnixLocale.c
M platforms/unix/plugins/SqueakFFIPrims/any-libffi.c
M platforms/unix/plugins/SqueakFFIPrims/ppc-darwin.c
M platforms/unix/plugins/SqueakFFIPrims/ppc-sysv.c
M platforms/unix/plugins/SqueakFFIPrims/x86-sysv.c
M platforms/win32/plugins/SqueakFFIPrims/sqWin32FFI.c
Log Message:
-----------
Merge branch 'Cog' of github.com:OpenSmalltalk/opensmalltalk-vm into merge-with-pharo
Commit: 9732bbfdde1045b1d37cbe6fe2ee81b5daf3b75e
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/9732bbfdde1045b1d3…
Author: Esteban Lorenzano <estebanlm(a)gmail.com>
Date: 2016-11-29 (Tue, 29 Nov 2016)
Changed paths:
M build.linux32ARMv6/third-party/libgit2/Makefile.lib
M build.linux32x86/third-party/libgit2/Makefile.lib
M build.linux64x64/third-party/libgit2/Makefile.lib
M build.win32x86/third-party/libgit2/Makefile.lib
Log Message:
-----------
Merge pull request #104 from estebanlm/merge-with-pharo
go back to version 0.23 of libgit2 (migration is not done)
Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/662dc144a946...97…