... at http://www.mirandabanda.org/files/Cog/VM/VM.r3692
These include stack ARM VMs for Spur and V3.
CogVM binaries as per VMMaker.oscog-eem.1855/r3692
General:
Fix a bad bug in primitiveVoidVMStateForMethod. One might think that the
heap
scan is unnecessary if the method does not have a cog method. But it could
be
the case that the code zone has recently been reclaimed and so not having a
cog
method is no indication that it didn't have a cog method some time in the
recent
past, and that there are indeed still contexts with machine code pcs out
there.
Correct slip in primitiveMethodXray, the flags were not set in each caseOf:
branch (thanks to -Wunused-value).
Change overflow tests in precondition rather than postcondition for small
integer multiplication. Because integer overflow is undefined behaviour,
and
because we can't rely on undefined behaviour, the compiler has a license to
eliminate the post-condition as dead code (at least since iso c89
acception).
Post-condition currently works because we use -fwrapv compiler flag, but
relying on specific compiler flags is bad practice in the long term.
Fix regression in signed 32bit long access (introduced beginning of April).
One symptom is:
(Alien newGC: 4)
signedLongAt: 1 put: -16r7287E552;
signedLongAt: 1
Fix positive32BitIntegerFor: for Spur64 which worked only because the
constant
was generated ULL.
Spur:
Fix primitiveIsPinned.
V3:
Fix missing comparison operation in genPrimitiveIdentical on V3. This should
fix Character = problem encounterd in Cuis.
Debugging: Add printContextReferencesTo: & printActivationsOf: and have them
print the pcs of the contexts they find.
Cogit:
Reorder annotation constants to simplify isPCMappedAnnotation:.
Sista Cogit:
Added a primitive to answer all the methods present in the machine code
zone.
allMachineCodeMethods
<primitive: 'primitiveAllMethodsCompiledToMachineCode' module:''>
^#()
Fix regression in VMMaker.oscog-eem.1823 when merging the two map
enumerators
into one that affects Sista. The merged enumerator must extend
IsSendAnnotations with the AnnotationExtension.
Plugins:
Regenerate plugins using the recently revised type inferrence code.
Slang:
Extend type inference capabilities from the AST. Unify type inference used
to
#inferReturnTypeFromReturnsIn: with that based on AST. Now that type
inference
is a bit more thorough, release type restrictions in #isFunctional in order
to
obtain much more aggressive inlining. With those, a gain of 10% is possible
on the LargeIntegersPlugin dominated bench:
Use a type inference that better fits C rules (C99 standard section 6.3):
- in (float op int), int is promoted to double not float
- in (unsigned short op short) both operands are promoted to #int due to int
promotion rules.
Use minimum generality for generated integer constants:
- use int if variable fits in int
- else unsigned int
- else long long (long would be enough for 64bits versions, but long long
works
for both 32 and 64)
- else unsigned long long
This is to avoid spurious unsigned promotion due to improved type inference.
Mac OS X: Fix argument processing, so that e.g.
myvm -breaksel aSelector my.image
works (but -headless still fails).
_,,,^..^,,,_
best, Eliot
Hi Dave,
it seems rather difficult to know about all the strong references to the
project you want to remove. Here, you assume that you have to care about
ProjectViewMorph and ProjectController. We should move that to MVCProject >>
#deletingProject: and MorphicProject >> #deletingProject:. I will try
something.
Best,
Marcel
P.S.: I will post the projects refactoring soon for everybody to try out.
:-)
--
View this message in context: http://forum.world.st/The-Trunk-System-dtl-821-mcz-tp4893080p4893121.html
Sent from the Squeak - Dev mailing list archive at Nabble.com.
Hi,
We have a proposal for a tool that we think might be useful to have in
trunk.
We spent some time pulling together benchmarks from various sources
(papers, the mailinglist, projects on squeaksource, ...) and combining them
with an extended version of Stefan Marr's implementation of a benchmarking
framework SMark. The tool and framework are modeled after SUnit, and
include different execution suites and code to figure out confidence
variations over multiple runs and such. Also, it draws graphs over multiple
runs so you can look at things like warmup and GC behavior, and see how
much time is spent doing incremental GCs and full GCs vs plain execution.
As a part of this I fixed the EPS export so these graphs can be exported in
a scalable format.
Here is a picture of the tool:
https://dl.dropboxusercontent.com/u/26242153/screenshot.jpg
As I said, it's modeled after TestRunner and SUnit, benchmarks subclass
from the "Benchmark" class, any method starting with "bench" is a
benchmark, and you can have setUp and tearDown methods as usual. By default
the benchmarks are run under an Autosize runner that re-executes each
benchmark until the combined runtime reaches 600ms (to smooth out any
noise). Beyond that, you can specify a number of iterations that the runner
will re-do that to see multiple averaged runs. The graph shows the
execution times split between running code (gray) incremental GCs (yellow)
and full GCs (red). There are popups and you can scroll to zoom in and out.
There is also a history of benchmark runs stored on the class side of
benchmark classes for later reference.
The code currently lives here:
http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/BenchmarkRunner
Considering we are every so often discussing benchmark results here, I
think it might be useful to share an execution framework for those.
cheers,
Tim
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1127.mcz
==================== Summary ====================
Name: Morphic-mt.1127
Author: mt
Time: 1 May 2016, 11:32:25.144127 am
UUID: 5636f362-b347-d842-aaea-fe73bc3eb25b
Ancestors: Morphic-mt.1126
Another update regarding sound shutdown code.
=============== Diff against Morphic-mt.1126 ===============
Item was changed:
----- Method: AbstractSound class>>updateScorePlayers (in category '*Morphic-Sounds-sound library-file in/out') -----
updateScorePlayers
| soundsBeingEdited |
"Force all ScorePlayers to update their instrument list from the sound library. This may done after loading, unloading, or replacing a sound to make all ScorePlayers feel the change."
ScorePlayer allSubInstancesDo:
[:p | p pause].
+ SoundPlayer shutDown: true.
- SoundPlayer shutDown.
soundsBeingEdited := EnvelopeEditorMorph allSubInstances collect: [:ed | ed soundBeingEdited].
ScorePlayerMorph allSubInstancesDo:
[:p | p updateInstrumentsFromLibraryExcept: soundsBeingEdited].
!