To elaborate on your point, its not just chasing pointers, it’s that those pointers point into random heap locations, each of which needs to be allocated individually and garbage collected. Also, because of the haphazard locations of these objects in the heap, you have way more cache misses than you would with value types.
Julia comes fairly close.
Re:Why the New V8 Is So Damn Fast
by ChrisRackauckas on Monday July 30, 2018 @10:12PM
(#17650019)
And Julia's tuples, named tuples, and structs are value-types without pointers.
You could make a JIT language as fast as C so long as it supported value types properly. Most programs in the "slow" languages spend most of their time chasing pointers around.