Hacker News new | ask | show | jobs
by pjmlp 343 days ago
Smalltalk has them, and its JIT research eventually became Hotspot.

Anything can change at any time in Smalltalk.

3 comments

And then we find out that Smalltalk implementations might choose to optimize instead of allowing anything to change at any time.

    ifFalse: alternativeBlock 
        "Answer the value of alternativeBlock. Execution does not actually
        reach here because the expression is compiled in-line."

        ^alternativeBlock value
One tree doesn't make a forest, from whatever implementation that was taken out of, and naturally there are always magician tricks that PyPy also uses.
*iirc* pretty much all of the Smalltalks (that was CUIS).

    ~
"Creating blocks in Smalltalk has always been a potential source of performance problems. … In Resilient, we have restricted blocks to be last in-first-out (LIFO)…"

https://blog.bracha.org/resilient-paper.pdf

    ~
"Digitalk’s Team/V unobtrusively introduced a non-reflective syntax…"

https://wirfs-brock.com/allen/posts/914

Strongtalk limited dynamic features.

But you’re not wrong in general. Even for Python there’s PyPy, with a JIT ~3x faster than CPython.

Strongtalk was the transition step between Smalltalk JITs and what became Sun's Hotspot, but that wasn't the main point I was making.

Also to note that even in that regard, Java happens to be more dynamic that people think, while the syntax is C++ like, the platform semantics are more akin to Smalltalk/Objective-C, hence why a JIT with such a background was a great addition.

There's a pretty big gap between "its JIT research eventually became Hotspot" and "Smalltalk can be made to perform on a par with Hotspot."
HN comments usually aren't big enough for a CS lecture regarding evolution of dynamic compilation, aka JIT.

There is enough stuff to fill at least one semester.