Hi,
On my tiny Arm V8 system (Nvidia Jetson Nano, Arm A57, [https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-na…) running Nvidia's distribution of Ubuntu 18.04 the optimised build for a VM that doesn't do floating point. For example 1.0 / 3.0 is 0.0. Gcc version 7.4.0.
The debug build, and the assert build both work fine.
If I reduce the optimisation from -O2 to -O1 it's ok.
I'm building the VM in opensmalltalk-vm/build.linux64ARMv8/squeak.stack.spur.
This is more to stop someone from as much head scratching for them as it is for me...
Thanks.
bruce
While running an assert or debug VM, I noticed repeated logs in console:
> (((usqInt)sourceIndex)) < endOfSource 2132
This corresponds to failing assert: in BitBltSimulation slang
srcLongAt: idx
<inline: #always>
self assert: idx asUnsignedInteger < endOfSource.
^self long32At: idx
It is easily reproducible with this Squeak test:
BitmapStreamTests new testShortIntegerArrayReadRefStream2.
Such read past end is benign, except in rare case when we read past a page boundary and cause a SEGV!
Via LLDB or via VM SImulation, we can find that it is related to the case when we `preload `a word from source and next source word because we think that we need more than 1 source word to fill 1st dest word.
I have identified and hopefully fixed the bug in VMMaker.oscog-nice.2563
https://source.squeak.org/VMMaker/VMMaker.oscog-nice.2563.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/issues/426
David T. Lewis uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-dtl.403.mcz
==================== Summary ====================
Name: VMMaker-dtl.403
Author: dtl
Time: 18 October 2019, 8:15:50.289 pm
UUID: dd763318-ebf1-426e-ba9b-f7a45e611ebb
Ancestors: VMMaker-dtl.402
Add missing methods so that SlangBrowser works again on classes and methods that are not part of the VM. Methods that can be translated to C (or inlined C) are displayed, others result in assertion errors or invalid C code.
For example, Scanner>>scanFieldNames: and many other methods in class Scanner are translated to C or inlined C, but Scanner>>scanAllTokenPositionsInto: cannot be translated and fails with an assertion error.
=============== Diff against VMMaker-dtl.402 ===============
Item was added:
+ ----- Method: TMethod>>comment (in category 'accessing') -----
+ comment
+ ^comment!
Item was added:
+ ----- Method: TMethod>>elideAnyFinalReturn (in category 'transformations') -----
+ elideAnyFinalReturn
+ "For super expansions we need to eliminate any final return to prevent premature exit.
+ Anything meaningful in the returned expression must be retained."
+
+ | stmtList expr |
+ stmtList := parseTree statements asOrderedCollection.
+ (stmtList notEmpty and: [stmtList last isReturn]) ifTrue:
+ [expr := stmtList last expression.
+ (expr isVariable and: [expr name = 'self'])
+ ifTrue: [stmtList := stmtList allButLast]
+ ifFalse: [stmtList at: stmtList size put: expr].
+ parseTree setStatements: stmtList]!
Item was added:
+ ----- Method: TMethod>>extraVariableNumber (in category 'transformations') -----
+ extraVariableNumber
+ ^extraVariableNumber!
Item was added:
+ ----- Method: TMethod>>hasProperties (in category 'testing') -----
+ hasProperties
+ ^properties notNil and: [properties notEmpty]!
Item was added:
+ ----- Method: TMethod>>mergePropertiesOfSuperMethod: (in category 'inlining') -----
+ mergePropertiesOfSuperMethod: superTMethod
+ superTMethod hasProperties ifFalse:
+ [^self].
+ self hasProperties ifFalse:
+ [properties := superTMethod properties.
+ ^self].
+ superTMethod properties pragmas do:
+ [:aPragma|
+ (self shouldIncorporatePragmaFromSuperMethod: aPragma) ifTrue:
+ [properties := properties copyWith: aPragma]]!
Item was added:
+ ----- Method: TMethod>>properties (in category 'accessing') -----
+ properties
+ ^properties!
Item was added:
+ ----- Method: TMethod>>shouldIncorporatePragmaFromSuperMethod: (in category 'inlining') -----
+ shouldIncorporatePragmaFromSuperMethod: aPragma
+ (properties includesKey: aPragma keyword) ifFalse:
+ [^true].
+ ((aPragma keyword beginsWith: #var:)
+ and: [properties pragmas noneSatisfy:
+ [:p|
+ (p keyword beginsWith: #var:)
+ and: [(p argumentAt: 1) = (aPragma argumentAt: 1)]]]) ifTrue:
+ [^true].
+ ^false!
Item was added:
+ (PackageInfo named: 'VMMaker') postscript: '"below, add code to be run after the loading of this package"
+
+ VMMaker initialize. "enable SlangBrowser if previously installed"'!
Hi everyone,
Is there some place I can find a document describing what subset of
Smalltalk is supported in Slang in its current state?
Thank you.
Laurent