Comments (7)
So ca63f69 checks the stack after every primitive.
And 4e152a6 fixes an embarrassing number of primitives that left the stack imbalanced or at least did not check argCount
.
Released as 1.0.1.
from squeakjs.
No sure what's going on, but the implementation of primitiveStringHash
is generated and looks ok:
SqueakJS/plugins/MiscPrimitivePlugin.js
Lines 544 to 574 in 3538c55
from squeakjs.
OMG this must have been wrong since 2014. I just tried it with
primitiveStringHash(argCount) {
...
interpreterProxy.popthenPush(argCount + 1, hash);
}
and metacello.sar continues installing fine.
However, that means some other generated primitives are likely wrong too
Thank you for the test case!
from squeakjs.
@LinqLover please use the vm-dev list for this kind of question/discussion. Nobody’s gonna read through closed tickets ;)
from squeakjs.
That primitive looks buggy, because it is called with argCount = 1
so it should pop 2 (string+arg) but actually pops 3.
What does it do in other VMs? Are they using argCount? This was generated many years ago, but I don't think the primitive changed?
from squeakjs.
So ca63f69 checks the stack after every primitive.
And 4e152a6 fixes an embarrassing number of primitives that left the stack imbalanced or at least did not checkargCount
.
Released as 1.0.1.
This is always fun :D
from squeakjs.
Great, thanks for fixing! :D
So ca63f69 checks the stack after every primitive.
Out of curiosity, how large is the performance impact of such "assertions in production"? :-)
from squeakjs.
Related Issues (20)
- Self-hosted saving? HOT 9
- High-Performance JIT HOT 10
- Add inline caches
- Where is the code for opening the onscreen keyboard for iOS? HOT 1
- SoundPlayer has still room for improvement HOT 1
- TypeError: Cannot read property '3' of undefined
- Error on loading squeak.js -- line 29 HOT 2
- Very frequent "primitive 176 not implemented" in debugger running Cuis image HOT 3
- Error: Class not in class table HOT 5
- Custom pointer shapes not shown in Mac Safari HOT 4
- 64 bit Cuis image out of memory HOT 1
- Squeak 6.0 image format unknown HOT 2
- High-DPI not working HOT 9
- Primitive 218 doNamedPrimitiveWithArgs not implemented HOT 1
- Mouse fixed at top left in Firefox for Android HOT 3
- I succeeded in running squeakJS in the web browser. But, ... HOT 1
- I cant open my projects in scratch.js.org HOT 13
- Add file import button HOT 1
- Fix writing Scratch projects HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from squeakjs.