O2 and O1 compilation produce a segmentation fault due to stack corruption (when debugging we saw some extra pushes from the stack) on callbacks return. This happens on windows 32, when compiling with mingw gcc 7.4.0.
The issue can be reproduced easily by running the Alien qsort example in latest vms in both Pharo and Squeak.
This PR proposes to patch just the thunkEntry function. Not optimizing just that function solves the issue in our environment, though maybe there is a more fine-grained solution. We should still investigate what is the particular optimization that causes the problem.
You can view, comment on, or merge this pull request online at:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/353
-- Commit Summary --
* Patch callback thunkEntry to not optimize, failing in win32 using gcc 7.4.0
-- File Changes --
M platforms/Cross/plugins/IA32ABI/ia32abicc.c (2)
-- Patch Links --
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/353.patchhttps://github.com/OpenSmalltalk/opensmalltalk-vm/pull/353.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/353
In addition to the existing alpha blending rules (24 and 34), I propose 3 new additional rules.
Check https://en.wikipedia.org/wiki/Alpha_compositing
Existing rule 34 is a correct implementation of Alpha Blending for scaled forms, i.e. if premultiplied alpha is used. But rule 24 is a correct implementation of non-scaled forms, only for the case where destination is opaque (i.e. it's alpha is 1.0 in every pixel). If destination includes translucency (or it is completely transparent), the result is not correct. In order to fix it, the RGB of each pixel need to be divided by the pixel alpha.
The proposed blendUnscaled is the basic (for non-scaled forms) alpha blending described in Wikipedia. Note that users knowing that destination background is opaque might call the faster rule 24 instead.
The other two additional proposed rules are for converting to and from premultiplied alpha.
EXISTING blend 24 alphaBlend
resultAlpha = srcAlpha + destAlpha*(1-srcAlpha)
resultRGB = srcAlpha*source + (1-srcAlpha)*dest
EXISTING blendAlphaScaled 34 alphaBlendScaled
resultRGBA = source + (1-srcAlpha)*dest
NEW PROPOSED multiplyRGBByAlpha
Non premultiplied alpha -> premultiplied alpha. Only uses destination. Alpha unmodified. For each RGB component,
resultRGB = dest*destAlpha
NEW PROPOSED divideRGBByAlpha
Premultiplied alpha -> non premultiplied alpha. Only uses destination. Alpha unmodified. For each RGB component,
resultRGB = dest/destAlpha
NEW PROPOSED blendUnscaled
Equivalent to blend, and then divideRGBByAlpha
resultAlpha = srcAlpha + destAlpha*(1-srcAlpha)
resultRGB = (srcAlpha*source + (1-srcAlpha)*dest) / resultAlpha
This would allow handling of scaled (premultiplied-alpha) forms, and blending of regular forms including translucency, without the need to call slower smalltalk code to fix the results.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/505
I am trying to build the unix sources for this project, exactly following the `HowToBuildFromSources` manual (the easy way). But unfortunately, when running `make` I get an error that `bld/plugins.int` is missing:
```
$ make
[ -d bld ] || mkdir bld
[ -f bld/Makefile ] || ( cd bld; ../config/configure; )
checking for gcc... gcc
# ... (75 lines skipped)
checking whether to build static libraries... no
/workspace/opensmalltalk-vm/src
/workspace/opensmalltalk-vm/src/plugins
checking sanity of generated src directory... bad
missing file: /workspace/opensmalltalk-vm/platforms/unix/bld/plugins.int
make: *** [Makefile:5: all] Error 1
```
See yourself:
[](https://gitpod.io/#snapshot/9bc102f3-ba84-437f-a226-a8851782c41b)
Is it me or is the documentation of the build process not up to date? Looking forward to your help!
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/507
`build.win32x86/HowToBuild` describes how we can build the VM using cygwin. However, I have installed WSL instead. When running `mvm`, it gives me:
```
../../platforms/win32/vm/sqWin32Utils.c:11:10: fatal error: Windows.h: No such file or directory
```
What do I have to do to enable mingw to find these header files? Any help is appreciated.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/510
Eliot Miranda uploaded a new version of VMMaker to project VM Maker Inbox:
http://source.squeak.org/VMMakerInbox/VMMaker.oscog-eem.2765.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2765
Author: eem
Time: 23 June 2020, 6:41:19.556484 pm
UUID: 91b9976e-60b9-4b5c-a2f8-b621dd454a07
Ancestors: VMMaker.oscog-eem.2764
Spur: Rewrite the revised followForwardedObjectFields:toDepth: soi it can be correctly inlined.
Slang: Change the order of application of ensureConditionalAssignmentsAreTransformedIn: so it is always the last thing done in tryToInlineMethodsIn:.
Straight-forward optimization of bindVariablesIn: in the common case of methods being inlined swith unchanged parameters.
=============== Diff against VMMaker.oscog-eem.2764 ===============
Item was changed:
----- Method: Spur32BitCoMemoryManager>>followForwardedObjectFields:toDepth: (in category 'as yet unclassified') -----
followForwardedObjectFields: objOop toDepth: depth
"Follow pointers in the object to depth.
Answer if any forwarders were found.
How to avoid cyclic structures?? A temporary mark bit? eem 6/22/2020 no need since depth is always finite."
<api>
<inline: false>
+ | found fmt limit |
- | oop found fmt |
found := false.
self assert: ((self isPointers: objOop) or: [self isOopCompiledMethod: objOop]).
fmt := self formatOf: objOop.
+ limit := (self numPointerSlotsOf: objOop format: fmt) - 1.
"It is essential to skip the first field of a method because it may be a
reference to a Cog method in the method zone, not a real object at all."
((self isCompiledMethodFormat: fmt)
ifTrue: [1]
ifFalse: [0])
+ to: limit
+ do: [:i| | oop |
- to: (self numPointerSlotsOf: objOop format: fmt) - 1
- do: [:i|
oop := self fetchPointer: i ofObject: objOop.
(self isNonImmediate: oop) ifTrue:
[(self isForwarded: oop) ifTrue:
[found := true.
oop := self followForwarded: oop.
self storePointer: i ofObject: objOop withValue: oop].
(depth > 0
and: [(self hasPointerFields: oop)
and: [self followForwardedObjectFields: oop toDepth: depth - 1]]) ifTrue:
[found := true]]].
^found!
Item was changed:
----- Method: Spur64BitCoMemoryManager>>followForwardedObjectFields:toDepth: (in category 'forwarding') -----
followForwardedObjectFields: objOop toDepth: depth
"Follow pointers in the object to depth.
Answer if any forwarders were found.
How to avoid cyclic structures?? A temporary mark bit? eem 6/22/2020 no need since depth is always finite."
<api>
<inline: false>
+ | found fmt limit |
- | oop found fmt |
found := false.
self assert: ((self isPointers: objOop) or: [self isOopCompiledMethod: objOop]).
fmt := self formatOf: objOop.
+ limit := (self numPointerSlotsOf: objOop format: fmt) - 1.
"It is essential to skip the first field of a method because it may be a
reference to a Cog method in the method zone, not a real object at all."
((self isCompiledMethodFormat: fmt)
ifTrue: [1]
ifFalse: [0])
+ to: limit
+ do: [:i| | oop |
- to: (self numPointerSlotsOf: objOop format: fmt) - 1
- do: [:i|
oop := self fetchPointer: i ofObject: objOop.
(self isNonImmediate: oop) ifTrue:
[(self isForwarded: oop) ifTrue:
[found := true.
oop := self followForwarded: oop.
self storePointer: i ofObject: objOop withValue: oop].
(depth > 0
and: [(self hasPointerFields: oop)
and: [self followForwardedObjectFields: oop toDepth: depth - 1]]) ifTrue:
[found := true]]].
^found!
Item was changed:
----- Method: TMethod>>exitVar:label:in: (in category 'inlining') -----
exitVar: exitVar label: exitLabel in: aCodeGen
"Replace each return statement in this method with an assignment to the
exit variable followed by either a return or a goto to the given label.
Answer if a goto was generated."
"Optimization: If exitVar is nil, the return value of the inlined method is not being used, so don't add the assignment statement."
| labelUsed map elisions eliminateReturnSelfs |
labelUsed := false.
map := Dictionary new.
elisions := Set new.
"Conceivably one might ^self from a struct class and mean it. In most cases though
^self means `get me outta here, fast'. So unless this method is from a VMStruct class,
elide any ^self's"
eliminateReturnSelfs := ((definingClass inheritsFrom: VMClass) and: [definingClass isStructClass]) not
and: [returnType = #void or: [returnType = #sqInt]].
parseTree nodesDo:
[:node | | replacement |
node isReturn ifTrue:
[self transformReturnSubExpression: node
toAssignmentOf: exitVar
andGoto: exitLabel
unless: eliminateReturnSelfs
into: [:rep :labelWasUsed|
replacement := rep.
labelWasUsed ifTrue: [labelUsed := true]]
in: aCodeGen.
"replaceNodesIn: is strictly top-down, so any replacement for ^expr ifTrue: [...^fu...] ifFalse: [...^bar...]
will prevent replacement of either ^fu or ^bar. The corollary is that ^expr ifTrue: [foo] ifFalse: [^bar]
must be transformed into expr ifTrue: [^foo] ifFalse: [^bar]"
(node expression isConditionalSend
and: [node expression hasExplicitReturn])
ifTrue:
[elisions add: node.
(node expression args reject: [:arg| arg endsWithReturn]) do:
[:nodeNeedingReturn|
self transformReturnSubExpression: nodeNeedingReturn statements last
toAssignmentOf: exitVar
andGoto: exitLabel
unless: eliminateReturnSelfs
into: [:rep :labelWasUsed|
replacement := rep.
+ labelWasUsed ifTrue: [labelUsed := true]]
+ in: aCodeGen.
- labelWasUsed ifTrue: [labelUsed := true]].
map
at: nodeNeedingReturn statements last
put: replacement]]
ifFalse:
[map
at: node
put: (replacement ifNil:
[TLabeledCommentNode new setComment: 'return ', node expression printString])]]].
map isEmpty ifTrue:
[self deny: labelUsed.
^false].
"Now do a top-down replacement for all returns that should be mapped to assignments and gotos"
parseTree replaceNodesIn: map.
"Now it is safe to eliminate the returning ifs..."
elisions isEmpty ifFalse:
[| elisionMap |
elisionMap := Dictionary new.
elisions do: [:returnNode| elisionMap at: returnNode put: returnNode expression].
parseTree replaceNodesIn: elisionMap].
"Now flatten any new statement lists..."
parseTree nodesDo:
[:node| | list |
(node isStmtList
and: [node statements notEmpty
and: [node statements last isStmtList]]) ifTrue:
[list := node statements last statements.
node statements removeLast; addAllLast: list]].
^labelUsed!
Item was changed:
----- Method: TMethod>>inlineFunctionCall:in: (in category 'inlining') -----
inlineFunctionCall: aSendNode in: aCodeGen
"Answer the body of the called function, substituting the actual
parameters for the formal argument variables in the method body.
Assume caller has established that:
1. the method arguments are all substitutable nodes, and
2. the method to be inlined contains no additional embedded returns."
| sel meth doNotRename argsForInlining substitutionDict |
+ aCodeGen maybeBreakForInlineOf: aSendNode in: self.
sel := aSendNode selector.
meth := (aCodeGen methodNamed: sel) copy.
meth ifNil:
[^self inlineBuiltin: aSendNode in: aCodeGen].
doNotRename := Set withAll: args.
argsForInlining := aSendNode argumentsForInliningCodeGenerator: aCodeGen.
meth args with: argsForInlining do:
[ :argName :exprNode |
exprNode isLeaf ifTrue:
[doNotRename add: argName]].
(meth statements size = 2
and: [meth statements first isSend
and: [meth statements first selector == #flag:]]) ifTrue:
[meth statements removeFirst].
meth renameVarsForInliningInto: self except: doNotRename in: aCodeGen.
meth renameLabelsForInliningInto: self.
self addVarsDeclarationsAndLabelsOf: meth except: doNotRename.
substitutionDict := Dictionary new: meth args size * 2.
meth args with: argsForInlining do:
[ :argName :exprNode |
+ (exprNode isVariable and: [exprNode name = argName]) ifFalse:
+ [substitutionDict at: argName put: exprNode].
- substitutionDict at: argName put: exprNode.
(doNotRename includes: argName) ifFalse:
[locals remove: argName]].
meth parseTree bindVariablesIn: substitutionDict.
^meth parseTree endsWithReturn
ifTrue: [meth parseTree copyWithoutReturn]
ifFalse: [meth parseTree]!
Item was changed:
----- Method: TMethod>>tryToInlineMethodsIn: (in category 'inlining') -----
tryToInlineMethodsIn: aCodeGen
"Expand any (complete) inline methods sent by this method.
Set the complete flag when all inlining has been done.
Answer if something was inlined."
| didSomething statementLists |
"complete ifTrue:
[^false]."
self definedAsMacro ifTrue:
[complete ifTrue:
[^false].
^complete := true].
- self ensureConditionalAssignmentsAreTransformedIn: aCodeGen.
didSomething := self tryToInlineMethodStatementsIn: aCodeGen statementListsInto: [:stmtLists| statementLists := stmtLists].
didSomething := (self tryToInlineMethodExpressionsIn: aCodeGen) or: [didSomething].
+ self ensureConditionalAssignmentsAreTransformedIn: aCodeGen.
didSomething ifTrue:
[writtenToGlobalVarsCache := nil].
complete ifFalse:
[self checkForCompletenessIn: aCodeGen.
complete ifTrue: [didSomething := true]]. "marking a method complete is progress"
^didSomething!
Item was changed:
----- Method: TStmtListNode>>bindVariablesIn: (in category 'transformations') -----
bindVariablesIn: aDictionary
+ aDictionary notEmpty ifTrue:
+ [statements := statements collect: [:s| s bindVariablesIn: aDictionary]]!
- statements := statements collect: [ :s | s bindVariablesIn: aDictionary ].!
I envison to have --quiet and --debugoutput FILENAME as options in the future. For an end-user it is difficult to separate application output/error from VM one (e.g. the infamous thread priority warning).
You can view, comment on, or merge this pull request online at:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/395
-- Commit Summary --
* debug: Prepare to let the app own stderr
* debug: Introduce the --quiet VM option to keep things silent
-- File Changes --
M build.macos32x86/common/Makefile.vm (2)
M build.macos64x64/common/Makefile.vm (2)
M platforms/Cross/vm/sq.h (7)
M platforms/iOS/vm/OSX/sqSqueakOSXApplication.m (5)
M platforms/unix/misc/threadValidate/sqUnixHeartbeat.c (6)
M platforms/unix/misc/threadValidate/threadValidate.c (14)
M platforms/unix/vm/aio.c (27)
M platforms/unix/vm/debug.c (22)
M platforms/unix/vm/debug.h (3)
M platforms/unix/vm/dlfcn-dyld.c (20)
M platforms/unix/vm/sqUnixCharConv.c (3)
M platforms/unix/vm/sqUnixExternalPrims.c (46)
M platforms/unix/vm/sqUnixHeartbeat.c (30)
M platforms/unix/vm/sqUnixITimerTickerHeartbeat.c (6)
M platforms/unix/vm/sqUnixMain.c (57)
M platforms/unix/vm/sqUnixMemory.c (8)
M platforms/unix/vm/sqUnixSpurMemory.c (4)
M platforms/unix/vm/sqaio.h (2)
-- Patch Links --
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/395.patchhttps://github.com/OpenSmalltalk/opensmalltalk-vm/pull/395.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/395
As the compiler tells:
```
OpenSmalltalk/opensmalltalk-vm/src/plugins/Squeak3D/Squeak3D.c:2475:7: warning: variable 'scale' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (!((l2vDistance == 0.0)
^~~~~~~~~~~~~~~~~~~~~~
/media/psf/Home/Smalltalk/OpenSmalltalk/opensmalltalk-vm/src/plugins/Squeak3D/Squeak3D.c:2480:42: note: uninitialized use occurs here
l2vDirection[0] = ((l2vDirection[0]) * scale);
^~~~~
```
That's effectively a bug in Smalltalk source, scale might be used uninitialized:
```
computeDirection
"Compute the direction for the current light and vertex"
| scale |
<inline: true>
<var: #scale type: #double>
(lightFlags anyMask: FlagPositional) ifTrue:[
"Must compute the direction for this vertex"
l2vDirection at: 0 put: (litVertex at: PrimVtxPositionX) - (primLight at: PrimLightPositionX).
l2vDirection at: 1 put: (litVertex at: PrimVtxPositionY) - (primLight at: PrimLightPositionY).
l2vDirection at: 2 put: (litVertex at: PrimVtxPositionZ) - (primLight at: PrimLightPositionZ).
"l2vDistance := self dotProductOf: l2vDirection with: l2vDirection."
l2vDistance := ((l2vDirection at: 0) * (l2vDirection at: 0)) +
((l2vDirection at: 1) * (l2vDirection at: 1)) +
((l2vDirection at: 2) * (l2vDirection at: 2)).
(l2vDistance = 0.0 or:[l2vDistance = 1.0])
ifFalse:[ l2vDistance := l2vDistance sqrt.
scale := -1.0/l2vDistance].
l2vDirection at: 0 put: (l2vDirection at: 0) * scale.
l2vDirection at: 1 put: (l2vDirection at: 1) * scale.
l2vDirection at: 2 put: (l2vDirection at: 2) * scale.
] ifFalse:[
(lightFlags anyMask: FlagDirectional) ifTrue:[
l2vDirection at: 0 put: (primLight at: PrimLightDirectionX).
l2vDirection at: 1 put: (primLight at: PrimLightDirectionY).
l2vDirection at: 2 put: (primLight at: PrimLightDirectionZ).
].
]
```
IMO:
- the scaling is not needed when distance is 0 or 1
- the scaling should be inside the block when distance is neither 0 nor 1
- the scaling should be positive
If I decipher correctly `l2vDirection` means light to vertex direction, that is:
LV vector = OV vector - OL vector
whatever origin O, and that is what we already do in code (PrimVtxPositionX - PrimLightPositionX). So I don't understand the -1.0 here...
If there is a -1.0, then we must also initialize scale to -1.0 when distance is 1.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/434
Initial pull request to include VMMaker source in opensmalltalk-vm repo.
Things that still need to be done before we can move to this version:
- provide access to the Smalltalk part of the repo (Tonel format) from Squeak.
- plugin source still needs to be included.
You can view, comment on, or merge this pull request online at:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/305
-- Commit Summary --
* Bit 17 of the image format number may be used as a test for 64-bit-ness for both Spur and V3. Add testBit17AsTestFor64BitImages to document this.
* Plugin Slang
* Fix Spur instantiateClass:indexableSize: for non-indexaqble objects. Old code would allocate if num indexable slots was 0, but would zero-fill. New code has the fixed old code ifdef'ed out and always fails. We can make the old code work for Squeak if required, but since no one's noticed DirectoryEntry crashing the system this shouldn't be an issue. If peopel feel strongly about the ugly old code simply delete it.
* Modify the profiling primitive cogCodeConstituents: to be able to differentiate the closedPICs from the openPICs in the profiling report
* * take into account the modified primitive collectCogCodeConstituents to display the differenciation open/closedPICs
* LargeIntegers plugin
* Fix simulation of Pharo primitiveDirectoryLookup above Squeak.
* Spur:
* Oops! Writing the function does nothing unless it is called. So once again, if ioScreenSize answers a zero screen extent (as is the case for headless images) then on snapshot write the sawvedWindowSize rather thna the zero extent. This should fix the experience people have with Pharo of saving headless images that then come up with a zero sized window when started headful.
* * UI for Pharo
* Spur:
* Slang:
* First pass at removing obsolete window color setting and move to the new theme framework.
* Normally this commit has no impact on the production VM (some refactorings were made to share code between different part of the GC, but no new things). I tried to simulate the whole VM and generate a VM and it works, but only Travis can confirm us everything's ok.
* SpurSweeper is working in the simulator, effectively changing Spur's fullGC to a mark-sweep algorithm when enabled.
* Since this commit SpurSweeper seems to be production-ready. I compiled a VM with SpurSweeper and it worked just fine, handling many GCs.
* Fixed bug with large struct in FFI with SysV .
* Sort the format numbers for more convenient display
* Added primitiveStringReplace in the JIT with Spur (was showing to Sophie how to write code in the JIT, so we did that together). We implemented only the quick paths for byte objects and array-like objects.
* Fix the growth of the remembered table during GC when there is not enough memory in old space. Allocates an extra memory segment in that case. This is very uncommon.
* Fix typo, the hypothetical 68003 is a known version number, 68004 is not.
* Provide a logging facility that uses the Printf package. See VMClass>>log:with:* for API. See Slang changes below for support.
* Simplify flushLog in the logging framework by providing fflush on WriteStream.
* Oops. Revert an inadvertent change to flushLog.
* Spur:
* VMMaker: Fix bad misinitialization bug where running VMMaker generation routines in 64-bits would cause 64-but sources to be generated. This caused the recent misgeneration of src/vm/cogit.c.
* Fix type inference of variable unskew in BitBlt >> copyLoop
* fix primStringReplace in the JIT.
* Fix incorrect size of replArray in genPrimitiveStringReplace
* BitBltSimulation>>copyLoop:
* BitBltSimulation>>copyLoop: No changes other than reformatting indentation for readability.
* Simulation on 64-bit Squeak.
* Spur:
* Refactor reaping the primFailCode on method activation to pull it out of the common path and hence lay the ground for a platform error object since all failures now call a single reapAndResetErrorCodeTo:header:
* Add support for conveying os/library error codes through a special primitive failure code object. The error code is a signed 64-bit value (so that e.g. answering -1 is not expensive). Specific image-level clients can map that value to unsigned as appropriate.
* Slang:
* CoInterpreter:
* Interpreter: Eliminate some uses of #== to compare integral values.
* Fix vorgotten variables in the unused variable elimination scheme for inlined value:[value:*] and to:by:do:
* Spur Image Segments:
* Spur Image Segments: The short cut in ensureNoNewObjectsIn: was wrong. Best not take any short cuts here at all.
* Fix bugs in DoubleWordArray>>[unsigned]long64At:
* Cogit: Extend Spur 64-bit primitiveAt with full support for 64-bit longs.
* Cogit: More work to full 64-bit access in at:[put:] primitives. Fix slip in x64 setsConditionCodesFor:.
* Get the StackInterpreterSimulator to a state where it can correctly simulate the DoubleByteArray, WordArray, DoubleWordArray and MemoryTests. Principally allow the SqueakFFIPrims plugin (ThreadedFFIPlugin) to load and make primitiveFFIIntegerAt[Put] function correctly in simulation. Change the two primitives to use unalignedShortAt:[put:], unalignedLong32At:[put:] & unalignedLong64At:[put:] and implement these in SpurMemoryManager (ObjectMemory can wait) and have the preambleCCode map these to the original shortAt[put], long32At[put] & long32At[put] C functions/macros.
* Change the contract of ThreadedFFIPlugin>>ffiAddressOf:startingAt:size:, moving the primitive fails to the callers for equivalent but more compact code.
* Fix a slip in CogObjectRepresentationFor64BitSpur>>genPrimitiveAt's 64-bit indexable suypport. The range check must include the sign bit since 64-bit at: answers an unsigned value. The Cogit now correctly passes the DoubleByteArrayTests, WordArrayTests, DoubleWordArrayTests and MemoryTests in simulation and actuality.
* Fix a slip in the new ThreadedFFIPlugin preambleCCode (the atput's need an extra parameter).
* Simulation/Translation tweaks. Mark some simulation-only InterpreterPlugin methods as doNotGenerate. Slow down the simulated clock on the StackInterpreter (so that in simulation fewer tests time out). Provide an optional simulation-only primTraceLog for the StackInterpreter (which was used to debug the new 64-bit at:[put:] support).
* Add a check for the knownClassIndex actually binding to a class in the relevant eeInstantiate routines.
* Slang for Plugins
* Slang: Make sure that numeric constant methods inlined through the tryToInlineMethodExpressionsIn: path get commented with their selector.
* Refactor preDeclareInterpreterProxyOn: to extract collecting the InterpreterProxy interface to its own method to simplify consistency checking. To make the checking more correct use a concrete Sour class for the referenceObjectMemoryClass.
* Tweak the recent inlining commenting change; don't bother to comment if what's being inlined is a named constant.
* Simulation:
* Fix typo in function declaration in ImmX11Plugin, identified by Stuart Cassoff.
* Fix two places where cloning forgets to set the immutability bit if the input has it set (shallowCopy should /not/ copy across the immutability bit, but become: and pin: should).
* Save BytecodeeSets now that both Pharo and Squeak have the SistaV1 bytecode set in the base.
* Remove SistaV1 category (its now empty here). Better temp names in printing method. Fix typo.
* Cogit:
* Hack fix comment generation. The API for comments in TParseNode is broken because in some subclasses it is a sequence of Strings, and elsewhere is a single String.
* Double-back on the rash statement that there was a bad bug in ceSend:above:to:numArgs: which was written to accept an association, not a class. This was by design. generalize the JIT support for directed super sends so that it accepts both the
* Interpreter: Fix bad bug in reverseDisplayFrom:to: feedback from the leak checker. The displayBits are not uopdated soon enough after a compaction and objects may be overwritten. So refactor postGCAction: to extract postGCUpdateDisplayBits which is also used by reverseDisplayFrom:to: to obtain up-to-date bits.
* Simulation:
* Phhhhh....
* Simulation:
* Spur:
* Implement following of pushConstant: aBoolean; jumpTo: target; ...target: jump: target2 if: cond in genJumpTo:.
* RegisterAllocatingCogit:
* Add the processor aliens when compiled in 64-bits for running on 64-bit Squeak
* Add the missing control register accessiors for GdbARMAlien64 and delete subclass accessors that are the same as the superclass's.
* Based on discussions decreased from 7 to 5 the number of instructions on Intel in primStringReplace copying loops
* Fix store check call in genPrimitiveStringReplace on RISCs (i.e. on ARM save & restore LinkReg around call).
* StackToRegisterMappingCogit:
* StackToRegisterMappingCogit:
* StackToRegisterMappingCogit:
* StackToRegisterMappingCogit:
* RegisterAllocatingCogit:
* RegisterAllocatingCogit:
* RegisterAllocatingCogit:
* RegisterAllocatingCogit:
* RegisterAllocatingCogit:
* Expand the set of names defined at compile time (e.g. for the option: pragma). Perhaps we should invert this and define the closed set of names defined at translation time.
* RegisterAllocatingCogit:
* RegisterAllocatingCogit:
* Rewrite the primitives in MiscPrimitivePlugin using conventional Slang, avoiding the translatedPrimitives ineffiicencies and dependence on methods in the image. Volunteers are invited to do the same for the ADPCMCodecPlugin and SoundGenerationPlugin.
* Fix a slip in primitiveDecompressFromByteArray caught by IncludedMethodsTests. Thank you David!
* Immutability:
* Extend FilePlugin to allow a file to be opened using either the file descriptor (fd) or FILE* in Pharo.
* Include FilePlugin>>primitiveFileOpenUseFileDescriptor & primitiveFileOpenUseFile on all platforms (not just PharoVM).
* The config should always come first.
* Better comment Tobias' inclusion of config.h in all plugins. Also ensure (almost) no duplications can occur.
* Cogit:
* Cogit:
* FilePlugin connect to file primitives
* Review of Alistair's recent FilePlugin changes:
* This commit is partially merged, I can only merge from a more recent Squeak image to get the DoubleWordArray/DoubleByteArray things correct. Also there's a conflict in SistaV1 bytecode table in StackToRegMappingCogit I need to figure out. I'll finish merging afterwards.
* Merge back the DoubleWordArray code from a fresh image. Normally everything should be merged, up and running.
* Decreases by 1 the number of instructions for byte reads on constants.
* Fogrot to merge back Eliot's change in the bytecode table with mine
* Cogits:
* Cogits:
* Restored SerialPlugin's *byName* primitives on non-PharoVM VMs.
* FilePlugin status checks and type declaration
* Implement multiple bytecode set aware scanning machinery for NewsqueakV4.
* fixed byteAt constant
* Fix regression introduced in VMMaker.oscog-eem.2333 or thereabouts when improving comoilation breakpoint. maybeSelectorOfMethod can answer nil so a guard is needed.
* Fix several (ancient) issues with the MiscPrimitivePlugin primitives, identified by Levente.
* Oops! Fixed one I missed.
* Plugin:
* Spur:
* For Spur MT interpreters to be generated by generateAllConfigurationsUnderVersionControl they must be in generateAllSqueakConfigurationsUnderVersionControl.
* Fix regression in generateInterpreterProxyFunctionDereference:on:indent: introduced in VMMaker.oscog-eem.2361.
* Fix by K K Subbu: Use memcmp instead of strncmp in ckformat to compare byte arrays.
* Fix declaration of main() in ckformat.c
* Add a progress bar when generating multiple vm code with VMMaker.
* - Add new primitive: primitiveHostWindowIcon
* Fix ckformat for 64 bit Spur, which saves format number in first 4 bytes of the header, versus 8 bytes for 64 bit V3. Prior version worked by accident for little endian host using strncmp() check, but failed when correct memcmp() was used without limiting check to 4 bytes for spur and 8 for V3.
* merge VB 2364 and CyrilFerlicot 2364
* Correct a 32bit-hardcoded pointer size in FFI
* ** new primitive to compare strings (slang + JIT)
* Check collation order byte array size in new string compare primitive as per Levente's suggestion.
* add primitive primitiveStdioDescriptorIsATTY
* primitiveStdioDescriptorIsATTY will return a bool instead of an int
* Add arguments in primitiveIsFileDescriptorATTY
* Fixed a bug in inlined allocation (or so I think... Did not check the tests)
* Remove the APIs I added to iterate over free chunks (there was an existing API)
* Improved comments & rename variables for Slang to C compilation not to complain (Shadowing globals with inlining cross-classes is a little bit tricky, let's not take any risks)
* Made C compiler happy (addressOf:, macro & shadowing non-sense)..
* Finally figured out that Slang is not able to do look-ups in compactor classes for some reason, hence only planning compactor was the only one compiling correctly since it defined everything inside...
* Spur ancilliary classes includes now:
* Improved compactor comments.
* Started implementation of Tracking. Refactor a bit more to share code between selective and tracking.
* Fix compiler bug with Apple LLVM version 7.0.0 (clang-700.1.76) for 64-bit Spur segment loading where compiler bug eliminated second version check in segment load when at -Os. Fix is to never inline the 32-bit word byte reversal.
* Fix a bug in the refactored conditional define code; a slip caused premature evaluation of the block argument.
* change the primitive to return the file descriptor type instead of just 0 or 1
* Use methodReturn***: instead of pop: + push***: in FilePlugin
* Compactor clean-ups, we now only have:
* AnObsolete slipped in, ask it to leave.
* Trust config.h more. It declares when to include dlfcn and takes care of _GNU_SOURCE.
* General:
* - fixed a bug in primitiveStringHash
* Fixed a bug in frameless full blocks (fetching receiver from receiver index in FullBlock and not outerContext)
* Fixed consistency checks in VMClass to succeed if no compactorClass is present.
* Fixed a bug in Selective Compactor where remembered objects were incorrectly copied.
* Removed debugging code to make VM compilation work again.
* BitBltPlugin:
* SpurSelectiveCompactor:
* Fix regression in primitiveDisplayString (missed return on short-cut return for empty string).
* Fix some compiler warnings in the interpreter (including unused variables).
* Actually fix Slang not emitting variable declarations for 'extern ...' declarations.
* Have Slang serve is rather than we work-around Slang, in as much as Slang now outputs any ext5ern ... declaration, so we no longer need a fake temp var with associated crap to keep the compiler happy.
* FFIPlugin: Fix slip in the Win64 ffiCalloutTo:SpecOnStack:in:
* Fix Sista build which is failing due to the lack of an export of objectBytesForSlots:.
* Fix profile buffer for 64-bits (use DoubleWordAray). So for symmetry change to using WordArray in 32-bits instead of Bitmap.
* Collect the new format PIC data.
* Cogit: Answer better closed PIC data from primitiveCollectCogCodeConstituents. i.e. scan preceding methods for references to closed PICs and store temporarily the send site's first case cache tag (mapped to a class) in the PIC's methodObject field for later harvesting. Answder am array of PIC selector followed by class, target pairs, where target is either a method or #doesNotUnderstand:.
* Eliminate obsolete primitive
* BitBltPlugin: The new primitiveDisplayString short cut has exposed an old bug: both loadBitBltDestForm & loadBitBltSourceForm sent byteSizeOf: to the form bits before checking if form bits isWordsOrBytes:. Also simplify loadHalftoneForm which comntained a superfluous (interpreterProxy isPointers: halftoneForm) not.
* BitBltPlugin: Move the checks for the dest and source forms being sufficiently large pointer objects into their respective validation routines.
* Spur Compaction & Slang
* - changed the free list representation from linked list to double linked list to unlink efficiently the free chunk in compaction phases.
* Eliminate a deprecation warning on Squeak.
* Added bytesBigEnoughForPrevPointer: abstraction and patch all callers to use that.
* Fixing cases where double linked list prev pointer was not correctly updated.
* Initialization:
* Fix static selector mapping in SpurCompactor; it needs to handle inheritance (SpurSelectiveCompactor inherits from SpurSweeper).
* - Added assertions for free chunks like crazy.
* Improved assertion (we want to catch this case)
* - Fixed compilation errors and some warnings.
* Fixed a bug when new segment was allocated in C sometimes the swizzle field used by SelectiveCompactor got corrupted. Changed assertions here and there.
* Update some class comments.
* Having a VMMaker-specific decompiler test and decompiler test failure collecrtor helps checking for compiler issues (e.g. just discovered one of my images has a mis-compiled SpurCompactor hierarchy).
* More initializationOptions clean-ups.
* Reworked a bit inlining for profiling.
* An include got missing, put it back where it belongs
* Added stats for Marking time and sweep time in full GC. Make them available as vm parameters 72 and 73.
* Spur:
* Cogits.
* Cogits.
* RegisterAllocatingCogit.
* SistaRegisterAllocatingCogit.
* New things can be forwarders with selective compactor.
* 274: primitiveFileStdioHandles() fails to return nil if stdio file is not available
* Compatibility methods and classes for VMMaker when loaded into Pharo6. Right now gets around EndianDetector and the lack of MethodReference.
* 274: Update primitiveFileStdioHandles error handling.
* Work around some Squeak specificities.
* Oops; there were two...
* isCompiledBlock and bytesPerElement
* Support for embeddedBlockClosures and schematicTempNamesString because these are used currently to interface to the JIT's code decoration facilities.
* Slang:
* Stream compatibility methods for ThreadSafeTranscript which I shouldmn;'t have to implement (it's supposed to be a WriteStream).
* Add isNodeNil to RBProgramNode & subclass
* Core VM:
* Finish the VMMaker side of the failing of FFI callouts on exceptions.
* Fix a slip in primitiveFailForFFIException:at:. If it fails the primitive, short cutting the return side of an FFI call it is its responsibility to own the VM and clear inFFIFlags.
* Add the missing implementation in InterpreterProxy, and correct the comment of primitiveFailForFFIException:at:. Also activateFailingPrimitiveMethod is not an api method; primitiveFailForFFIException:at: is.
* Work around the hack use of (dis)ownVM: for storing the argumentCount of the current method on callback return in the non-threaded VM. The argument to disownVM: is either an immediate integer (callback) or flags which can't be immediate (FFI callout, plugin primitive callout). I regret this but it works, so keep it going for now.
* And bring the simulation only bridge methods up to date in NewObjectMemory, reducing duplication.
* StackInterpreter:
* General robustness, compatibility and cleanups.
* Slang: more Pharo/Squeak compatibiltiy refactoring.
* Add translation support to RBProgramNode such that simple methods such as primitiveMakePoint can be translated to C. Still work needed to run the workspace translation scripts, which translate everything to be able to run inlining before generating C for a single method.
* Add LongTestCase & access for the return of a quick method to RBMethodNode needed for cmacro: methods.
* Add translation support for brace constructs in case statements.
* More Pharo compatibility.
* Make sure is:KindOf: has a valid return type.
* Final piece of Pharo compatibility to allow e.g. the REPL startreader images to run in Pharo 6.1. Split the input dialog for FakeStdinStream so it works both on Pharo and Squeak.
* Oops; remember to use isFakeStdinStream, and avoid isKindOf: in a couple of other places.
* Eliminate cCode: usage in the B3DAcceleratorPlugin and HostWindowPlugin usign the new "var args" style. Rewrite mem:mo:ve: et al in the new style.
* More compatbility. InstructionPrinter et al are missing in Pharo6 and subsequent. RBProgramNode methods for Slang. GtTranscript compatibility.
* Change the objStack logic to mmap a new memory segment on overflow if not enough room on heap when allocating a new page.
* Split the VMParameter primitive in 3 methods in Slang. I did it because of jump false size overflow on V3PlusClosure BC set, but it also look nicer.
* Production VM:
* Introduced the concept of lilliputian free chunks, which are free chunks not big enough to use the double linked list design. They do not exist in 32 bits but only in 64bits.
* Change SelectiveCompactor to annotate segments during sweep phase with the last lilliputian chunk they hold. When compacting specific segments, this information is re-used to jump in the lilliputian single linked list to the free chunk right before hence elements can be cheaply removed from the linked list without iterating over it.
* Fix a bug in lilliputian management in selectivecompactor when adding a segment to compact into while there is none available.
* Spur: Tweak followClassTable toi not waste effort following hiddenRootsObj.
* General:
* Cog Spur:
* General:
* VMClass strlen, strncpy and getenv
* FakeStdinStream and FilePluginSimulator do double duty with the #atEnd flag to allow #sqFile:Read:Into:At: to break out of its loop. This is brittle as a additional calls to #atEnd breaks the simulation - which is what Pharo does.
* BitBltPlugin/BitBltSimulation
* InterpreterPrimitives
* VMClass>>strncpy:_:_: refactor
* Plugins:
* Plugins:
* JPEGReadWriter2Plugin:
* Oops! Fix the major regressions in the last but one commit.
* Cogit Slang Reflection:
* strncpy & primitiveFailForOSError
* VMMaker Unicode strings
* Plugins:
* Plugins:
* :blush:
* Plugins:
* Simulation:
* Simplify two uses of malloc: now that we use the right simulation form for VMClass>>malloc:.
* VM simulation fixes:
* VMClass>>memcpy:_:_: handle CugMethodSurrogates
* Add LocalePluginSimulator
* Slang:
* Plugins:
* Fix a couple of tests
* Plugins:
* Simulator:
* ThreadedFFIPlugin:
* merge vmmaker into opensmalltalk-vm
* move baseline
-- File Changes --
A .project (3)
A smalltalksrc/Android-Base/Android.class.st (144)
A smalltalksrc/Android-Base/package.st (1)
A smalltalksrc/Balloon-Engine-Pools/BalloonEngineConstants.class.st (558)
A smalltalksrc/Balloon-Engine-Pools/package.st (1)
A smalltalksrc/BytecodeSets/BytecodeEncoder.extension.st (61)
A smalltalksrc/BytecodeSets/ContextPart.extension.st (20)
A smalltalksrc/BytecodeSets/EncoderForNewsqueakV4.class.st (1288)
A smalltalksrc/BytecodeSets/InstructionClient.extension.st (48)
A smalltalksrc/BytecodeSets/InstructionPrinter.extension.st (110)
A smalltalksrc/BytecodeSets/InstructionStream.extension.st (443)
A smalltalksrc/BytecodeSets/MethodContext.extension.st (9)
A smalltalksrc/BytecodeSets/package.st (1)
A smalltalksrc/CMakeVMMaker/CMCairo.class.st (133)
A smalltalksrc/CMakeVMMaker/CMCairoBundle.class.st (29)
A smalltalksrc/CMakeVMMaker/CMFreetype2.class.st (124)
A smalltalksrc/CMakeVMMaker/CMIOSFreetype2.class.st (66)
A smalltalksrc/CMakeVMMaker/CMLibPng.class.st (109)
A smalltalksrc/CMakeVMMaker/CMOSXFreetype2.class.st (18)
A smalltalksrc/CMakeVMMaker/CMOpenSSL.class.st (10)
A smalltalksrc/CMakeVMMaker/CMPixman.class.st (108)
A smalltalksrc/CMakeVMMaker/CMPkgConfig.class.st (83)
A smalltalksrc/CMakeVMMaker/CMThirdpartyLibrary.class.st (327)
A smalltalksrc/CMakeVMMaker/CMWin32Cairo.class.st (53)
A smalltalksrc/CMakeVMMaker/CMWin32Freetype2.class.st (94)
A smalltalksrc/CMakeVMMaker/CMWin32LibPng.class.st (67)
A smalltalksrc/CMakeVMMaker/CMWin32OpenSSL.class.st (113)
A smalltalksrc/CMakeVMMaker/CMWin32Pixman.class.st (45)
A smalltalksrc/CMakeVMMaker/CMWin32PkgConfig.class.st (67)
A smalltalksrc/CMakeVMMaker/CMWin32ZLib.class.st (96)
A smalltalksrc/CMakeVMMaker/CMakeAndroidGenerator.class.st (151)
A smalltalksrc/CMakeVMMaker/CMakeAndroidPluginGenerator.class.st (172)
A smalltalksrc/CMakeVMMaker/CMakeGenScripts.class.st (191)
A smalltalksrc/CMakeVMMaker/CMakeGenerator.class.st (252)
A smalltalksrc/CMakeVMMaker/CMakePluginGenerator.class.st (215)
A smalltalksrc/CMakeVMMaker/CMakeVMGenerator.class.st (387)
A smalltalksrc/CMakeVMMaker/CPlatformConfig.class.st (1033)
A smalltalksrc/CMakeVMMaker/CocoaIOSConfig.class.st (1114)
A smalltalksrc/CMakeVMMaker/CogCocoaIOSConfig.class.st (66)
A smalltalksrc/CMakeVMMaker/CogFamilyCocoaIOSConfig.class.st (362)
A smalltalksrc/CMakeVMMaker/CogFamilyUnixConfig.class.st (405)
A smalltalksrc/CMakeVMMaker/CogFamilyWindowsConfig.class.st (401)
A smalltalksrc/CMakeVMMaker/CogFreeBSDConfig.class.st (314)
A smalltalksrc/CMakeVMMaker/CogMTBuilder.class.st (92)
A smalltalksrc/CMakeVMMaker/CogMTCocoaIOSConfig.class.st (43)
A smalltalksrc/CMakeVMMaker/CogMTFreeBSDConfig.class.st (65)
A smalltalksrc/CMakeVMMaker/CogMTMacOSConfig.class.st (68)
A smalltalksrc/CMakeVMMaker/CogMTUnixConfig.class.st (66)
A smalltalksrc/CMakeVMMaker/CogMTWindowsConfig.class.st (54)
A smalltalksrc/CMakeVMMaker/CogMacOSConfig.class.st (945)
A smalltalksrc/CMakeVMMaker/CogMacOSDebugConfig.class.st (18)
A smalltalksrc/CMakeVMMaker/CogOnDebian64Config.class.st (31)
A smalltalksrc/CMakeVMMaker/CogUnixConfig.class.st (392)
A smalltalksrc/CMakeVMMaker/CogUnixDebugConfig.class.st (19)
A smalltalksrc/CMakeVMMaker/CogUnixNoGLConfig.class.st (201)
A smalltalksrc/CMakeVMMaker/CogWindowsConfig.class.st (237)
A smalltalksrc/CMakeVMMaker/CogWindowsDebugConfig.class.st (21)
A smalltalksrc/CMakeVMMaker/InterpreterPlugin.extension.st (22)
A smalltalksrc/CMakeVMMaker/MacOSConfig.class.st (415)
A smalltalksrc/CMakeVMMaker/StackCocoaIOSCLANGConfig.class.st (34)
A smalltalksrc/CMakeVMMaker/StackCocoaIOSConfig.class.st (65)
A smalltalksrc/CMakeVMMaker/StackCrossRaspbianConfig.class.st (431)
A smalltalksrc/CMakeVMMaker/StackCrossRaspbianFastBltConfig.class.st (239)
A smalltalksrc/CMakeVMMaker/StackEvtAndroidConfig.class.st (416)
A smalltalksrc/CMakeVMMaker/StackEvtUnixConfig.class.st (71)
A smalltalksrc/CMakeVMMaker/StackEvtUnixDebugConfig.class.st (12)
A smalltalksrc/CMakeVMMaker/StackFreeBSDConfig.class.st (31)
A smalltalksrc/CMakeVMMaker/StackIPhoneConfig.class.st (695)
A smalltalksrc/CMakeVMMaker/StackMacOSConfig.class.st (39)
A smalltalksrc/CMakeVMMaker/StackMacOSDebugConfig.class.st (18)
A smalltalksrc/CMakeVMMaker/StackRaspbianConfig.class.st (216)
A smalltalksrc/CMakeVMMaker/StackRaspbianFastBltConfig.class.st (35)
A smalltalksrc/CMakeVMMaker/StackSimulatorConfig.class.st (94)
A smalltalksrc/CMakeVMMaker/StackUnixConfig.class.st (40)
A smalltalksrc/CMakeVMMaker/StackUnixDebugConfig.class.st (19)
A smalltalksrc/CMakeVMMaker/StackUnixDebugFixedVerSIConfig.class.st (45)
A smalltalksrc/CMakeVMMaker/StackWindowsConfig.class.st (37)
A smalltalksrc/CMakeVMMaker/package.st (1)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAddCompileOptions.class.st (54)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAddCustomCommandOutput.class.st (233)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAddDefinitions.class.st (59)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAddExecutableNameOptionSource.class.st (137)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAddLibrary.class.st (95)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAddSubDirectory.class.st (76)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAppendConfigHIn.class.st (21)
A smalltalksrc/CMakeVMMakerSqueak/CMakeAppendConfigStatus.class.st (23)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckAlloca.class.st (34)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckFunctionAtExitOnExit.class.st (30)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckFunctionExists.class.st (61)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckIncludeFile.class.st (78)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckLibDL.class.st (34)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckLibraryExists.class.st (108)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckStructHasMember.class.st (101)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckTryCompileHaveLangInfoCodeset.class.st (27)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckTryRunDoubleWordAlignmentOrder.class.st (28)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckTypeSize.class.st (33)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCheckVariableExists.class.st (80)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCommand.class.st (33)
A smalltalksrc/CMakeVMMakerSqueak/CMakeCompilerIsGNUCC.class.st (31)
A smalltalksrc/CMakeVMMakerSqueak/CMakeConfigDefine.class.st (51)
A smalltalksrc/CMakeVMMakerSqueak/CMakeConfigUnDefine.class.st (40)
A smalltalksrc/CMakeVMMakerSqueak/CMakeDebug.class.st (38)
A smalltalksrc/CMakeVMMakerSqueak/CMakeDirDefs.class.st (22)
A smalltalksrc/CMakeVMMakerSqueak/CMakeFindPackage.class.st (44)
A smalltalksrc/CMakeVMMakerSqueak/CMakeFindPackageOpenGL.class.st (36)
A smalltalksrc/CMakeVMMakerSqueak/CMakeGeneratorForSqueak.class.st (252)
A smalltalksrc/CMakeVMMakerSqueak/CMakeHeader.class.st (37)
A smalltalksrc/CMakeVMMakerSqueak/CMakeIOSInstallCode.class.st (31)
A smalltalksrc/CMakeVMMakerSqueak/CMakeIfAddDefinitionsElseAddDefinitions.class.st (51)
A smalltalksrc/CMakeVMMakerSqueak/CMakeIfDefinedConfigDefine.class.st (37)
A smalltalksrc/CMakeVMMakerSqueak/CMakeIfNotFlagSetConfigDefine.class.st (40)
A smalltalksrc/CMakeVMMakerSqueak/CMakeIfNotSetConfigDefine.class.st (40)
A smalltalksrc/CMakeVMMakerSqueak/CMakeIfPluginDependencies.class.st (50)
A smalltalksrc/CMakeVMMakerSqueak/CMakeInclude.class.st (27)
A smalltalksrc/CMakeVMMakerSqueak/CMakeIncludeDirectories.class.st (116)
A smalltalksrc/CMakeVMMakerSqueak/CMakeLinkDirectories.class.st (50)
A smalltalksrc/CMakeVMMakerSqueak/CMakeListAppend.class.st (117)
A smalltalksrc/CMakeVMMakerSqueak/CMakeMessage.class.st (66)
A smalltalksrc/CMakeVMMakerSqueak/CMakeMinimumRequired.class.st (57)
A smalltalksrc/CMakeVMMakerSqueak/CMakePluginExternal.class.st (59)
A smalltalksrc/CMakeVMMakerSqueak/CMakePluginGeneratorForSqueak.class.st (741)
A smalltalksrc/CMakeVMMakerSqueak/CMakePluginInternal.class.st (55)
A smalltalksrc/CMakeVMMakerSqueak/CMakePluginVm.class.st (102)
A smalltalksrc/CMakeVMMakerSqueak/CMakeProject.class.st (34)
A smalltalksrc/CMakeVMMakerSqueak/CMakeSet.class.st (39)
A smalltalksrc/CMakeVMMakerSqueak/CMakeSetConfigDefine.class.st (34)
A smalltalksrc/CMakeVMMakerSqueak/CMakeSetProperty.class.st (126)
A smalltalksrc/CMakeVMMakerSqueak/CMakeSetSourceFilesProperties.class.st (84)
A smalltalksrc/CMakeVMMakerSqueak/CMakeSetTargetProperties.class.st (151)
A smalltalksrc/CMakeVMMakerSqueak/CMakeSqConfigH.class.st (116)
A smalltalksrc/CMakeVMMakerSqueak/CMakeTargetLinkLibraries.class.st (105)
A smalltalksrc/CMakeVMMakerSqueak/CMakeTemplate.class.st (56)
A smalltalksrc/CMakeVMMakerSqueak/CMakeTestBigEndian.class.st (34)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMDisplayCustom.class.st (14)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMDisplayFbdev.class.st (14)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMDisplayNull.class.st (14)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMDisplayQuartz.class.st (14)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMDisplayX11.class.st (14)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMGeneratorForSqueak.class.st (239)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakBuildersHelp.class.st (254)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakBuildersTest.class.st (80)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakCMakeTemplatesTest.class.st (18)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakCommonConfigTest.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakConfigurationsHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakDesignPatternsHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakDeveloperHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakDistroGeneratorHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakGeneratorsHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakHistoryHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakHistoryIanPiumartaHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakHistoryIgorStasenkoHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakMacintoshConfigTest.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakOverviewHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakPluginGeneratorHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakRedirectMethodsTest.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakRedirectMethodsWithArgTest.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakStartHereHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakTemplatesHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakTutorialEndUserHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakTutorialNewBuilderHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakTutorialNewConfigurationHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakTutorialsHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakUnixConfigTest.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakVMGeneratorHelp.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMMakerSqueakWindowsConfigTest.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMPlugin.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundALSA.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundCustom.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundMacOSX.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundNAS.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundNull.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundOSS.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundPulse.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMSoundSun.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVMakerConfigurationInfo.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CMakeVersion.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/CPlatformConfigForSqueak.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/InterpreterPlugin.extension.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux32ARMv6Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux32x86Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux32x86SqueakCogV3Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux64x64Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux64x64SqueakCogSpurConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux64x86w32BitConfigUsrLib.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux64x86w32BitConfigUsrLib32.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux64x86w32BitSqueakCogSpurConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/Linux64x86w32BitSqueakCogV3Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakBSD32x86Builder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakBSD32x86Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakCMakeSourceDistroBuilder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakCMakeVMMakerAbstractBuilder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIA32BochsBuilder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIA32BochsConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIA32BochsLinuxConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIA32BochsMacOSConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIA32BochsMacOSXConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIA32BochsWin32Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIOSBuilder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakIOSConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakLinux32ARMv6Builder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakLinux32x86Builder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakLinux64x64Builder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakLinux64x86w32CompatBuilder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakMacOSPowerPCBuilder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakMacOSX32x86Builder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakMacOSX32x86Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakMacOSXPowerPCConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakMacintoshConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakSunOS32x86Builder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakSunOS32x86Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakUnixConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakWin32x86Builder.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakWin32x86Config.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/SqueakWindowsConfig.class.st (0)
A smalltalksrc/CMakeVMMakerSqueak/package.st (0)
A smalltalksrc/Cog/BochsIA32Alien.class.st (0)
A smalltalksrc/Cog/BochsIA32Alien64.class.st (0)
A smalltalksrc/Cog/BochsIA32AlienTests.class.st (0)
A smalltalksrc/Cog/BochsIA32Plugin.class.st (0)
A smalltalksrc/Cog/BochsPlugin.class.st (0)
A smalltalksrc/Cog/BochsX64Alien.class.st (0)
A smalltalksrc/Cog/BochsX64Alien64.class.st (0)
A smalltalksrc/Cog/BochsX64Plugin.class.st (0)
A smalltalksrc/Cog/BytecodeEncoderPutschEditor.class.st (0)
A smalltalksrc/Cog/ClassHierarchyDuplicator.class.st (0)
A smalltalksrc/Cog/ClosureLabelsPrintEditor.class.st (0)
A smalltalksrc/Cog/CogProcessorAlien.class.st (0)
A smalltalksrc/Cog/CogScripts.class.st (0)
A smalltalksrc/Cog/CogVMTests.class.st (0)
A smalltalksrc/Cog/CommandLineLauncher.class.st (0)
A smalltalksrc/Cog/Context.extension.st (0)
A smalltalksrc/Cog/CrashReportsMailer.class.st (0)
A smalltalksrc/Cog/ETC.class.st (0)
A smalltalksrc/Cog/GdbARMAlien.class.st (0)
A smalltalksrc/Cog/GdbARMAlien64.class.st (0)
A smalltalksrc/Cog/GdbARMAlienTests.class.st (0)
A smalltalksrc/Cog/GdbARMPlugin.class.st (0)
A smalltalksrc/Cog/MIPSDisassembler.class.st (0)
A smalltalksrc/Cog/MIPSELSimulator.class.st (0)
A smalltalksrc/Cog/MIPSELSimulatorTests.class.st (0)
A smalltalksrc/Cog/MIPSInstruction.class.st (0)
A smalltalksrc/Cog/MIPSSimulator.class.st (0)
A smalltalksrc/Cog/MultiProcessor.class.st (0)
A smalltalksrc/Cog/ProcessorSimulationTrap.class.st (0)
A smalltalksrc/Cog/ProtoObject.extension.st (0)
A smalltalksrc/Cog/Spur32BitPreen.class.st (0)
A smalltalksrc/Cog/Spur32to64BitBootstrap.class.st (0)
A smalltalksrc/Cog/package.st (0)
A smalltalksrc/CogAttic/Behavior.extension.st (0)
A smalltalksrc/CogAttic/BlockClosure.extension.st (0)
A smalltalksrc/CogAttic/ClassDescription.extension.st (0)
A smalltalksrc/CogAttic/CogScriptsAttic.class.st (0)
A smalltalksrc/CogAttic/CompiledMethod.extension.st (0)
A smalltalksrc/CogAttic/Context.extension.st (0)
A smalltalksrc/CogAttic/Decompiler.extension.st (0)
A smalltalksrc/CogAttic/EncoderForV3PlusClosures.extension.st (0)
A smalltalksrc/CogAttic/InstructionStream.extension.st (0)
A smalltalksrc/CogAttic/MCClassDefinition.extension.st (0)
A smalltalksrc/CogAttic/MCMethodDefinition.extension.st (0)
A smalltalksrc/CogAttic/MethodNode.extension.st (0)
A smalltalksrc/CogAttic/SpurBootstrap.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrap32.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapCuisPrototypes.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapMonticelloPackagePatcher.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapNewspeakFilePatcher.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapPharoPrototypes.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapPrototypes.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapSqueak43Prototypes.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapSqueakFamilyPrototypes.class.st (0)
A smalltalksrc/CogAttic/SpurBootstrapSqueakPrototypes.class.st (0)
A smalltalksrc/CogAttic/SpurOldFormat32BitMMLESimulator.class.st (0)
A smalltalksrc/CogAttic/SpurOldToNewMethodFormatMunger.class.st (0)
A smalltalksrc/CogAttic/package.st (0)
A smalltalksrc/CogBenchmarks/DBAbstractConstraint.class.st (0)
A smalltalksrc/CogBenchmarks/DBBinaryConstraint.class.st (0)
A smalltalksrc/CogBenchmarks/DBEditConstraint.class.st (0)
A smalltalksrc/CogBenchmarks/DBEqualityConstraint.class.st (0)
A smalltalksrc/CogBenchmarks/DBPlan.class.st (0)
A smalltalksrc/CogBenchmarks/DBPlanner.class.st (0)
A smalltalksrc/CogBenchmarks/DBScaleConstraint.class.st (0)
A smalltalksrc/CogBenchmarks/DBStayConstraint.class.st (0)
A smalltalksrc/CogBenchmarks/DBStrength.class.st (0)
A smalltalksrc/CogBenchmarks/DBUnaryConstraint.class.st (0)
A smalltalksrc/CogBenchmarks/DBVariable.class.st (0)
A smalltalksrc/CogBenchmarks/DummyStream.extension.st (0)
A smalltalksrc/CogBenchmarks/ReBenchHarness.class.st (0)
A smalltalksrc/CogBenchmarks/ReBenchHarnessArgumentParser.class.st (0)
A smalltalksrc/CogBenchmarks/ReBenchReporter.class.st (0)
A smalltalksrc/CogBenchmarks/RichDeviceTaskDataRecord.class.st (0)
A smalltalksrc/CogBenchmarks/RichHandlerTaskDataRecord.class.st (0)
A smalltalksrc/CogBenchmarks/RichIdleTaskDataRecord.class.st (0)
A smalltalksrc/CogBenchmarks/RichObject.class.st (0)
A smalltalksrc/CogBenchmarks/RichPacket.class.st (0)
A smalltalksrc/CogBenchmarks/RichRunner.class.st (0)
A smalltalksrc/CogBenchmarks/RichTaskControlBlock.class.st (0)
A smalltalksrc/CogBenchmarks/RichTaskState.class.st (0)
A smalltalksrc/CogBenchmarks/RichWorkerTaskDataRecord.class.st (0)
A smalltalksrc/CogBenchmarks/SMarkAutosizeRunner.class.st (0)
A smalltalksrc/CogBenchmarks/SMarkCogRunner.class.st (0)
-- Patch Links --
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/305.patchhttps://github.com/OpenSmalltalk/opensmalltalk-vm/pull/305.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/305