Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Smalltalk has them, and its JIT research eventually became Hotspot.

Anything can change at any time in Smalltalk.



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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: