|
|
|
|
|
by soulbadguy
998 days ago
|
|
Possible, but i don't think it's very likely. Project Valhalla is a big umbrella term but couple of important points : - The new value type don't garanty flat memory representation, so might have some corner cases which are not properly optimized - The monomorphization or java vs C++ is still a big advantage for c++ - The compiler optimization of LLVM/GCC are still quite a bit better (in term of generated code) vs jvm/graal |
|
Valhalla supports flattening, that's the whole point of it. To get that you need to have a type declared as a value type, and then put it into a non-null variable, field or parameter. At least that's how the current prototype works. If you do that then the compiler will fully inline the allocation into arrays, containing objects/structs, or the stack.
Valhalla started with monomorphization prototypes, although that went silent years ago. I don't know if it'll be delivered in the first version. But, it's an intended goal of the project to deliver.
As for the final point, could you evidence that? It's very hard to do direct comparisons here because they're usually compiling very different languages and Graal hasn't been optimized for C++. For example, Graal can compile many languages LLVM just doesn't even try to. Also, you'd really need to compare against the Oracle GraalVM (née GraalVM Enterprise) to see the best of what it can do. I'm curious what comparison you're thinking of when you say that, as Graal is an extremely advanced compiler by any measure.