4 ms·
I am pretty sure the reason for this is that alternative designs for control flow cannot be implemented in linear time; Java, for example, has experienced epic
by saurik 7y ago
I am pretty sure the reason for this is that alternative designs for control flow cannot be implemented in linear time; Java, for example, has experienced epic denial of service attack issues on their verifier design, where code of specific forms leads to quadratic verification time.
- cwzwarich 7y agoThere are a few different performance issues with the Java bytecode verifier. Are you referring to this one? https://pdfs.semanticscholar.org/7dd2/b5359ab507fec1b1223db6edf5f58f9a28b6.pdf https://pdfs.semanticscholar.org/7dd2/b5359ab507fec1b1223db6... The cause of this is that the dataflow analysis performs nontrivial merging of dataflow facts, requiring a reanalysis. In the WebAssembly design there is no merging; any divergence of stack effects is an error. There are other deeper issues with the Java design: bytecode subroutines, the fact that the Java subtype relation doesn't form a semilattice, and way in which Java bytecode models object initialization.