The old bytecode verifier used by the GCJ compiler has now finally been
removed. It was a small and straightforward verifier but had a few bugs that made it difficult to use GCJ with random JARs. At the same time, the newer bytecode verifier (written in C++) used by the GCJ interpreter
gij had far fewer bugs and could handle almost all JARs found in the wild. Since no one was fixing the bugs in the old verifier, GCJ could not work with many JARs for a long time and thus was unusable for a large number of potential users. Bryce
made the new bytecode verifier work with the GCJ compiler to support the work on the new Binary Compatibility ABI. After some time I
made the new verifier the default for even the old C++ ABI.
I feel guilty and sad now because once upon a time I had resolved to fix some of these bugs but never actually got around to fixing them. I had studied the source code and had read several papers on bytecode verification, especially some of the excellent ones by
Alessandro Coglio, but never implemented any of the techniques. Not good.
(
Originally posted on Advogato.)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.