Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Java 9 introduced something called "covariant return types". This gets used in
java.nio.ByteBuffer
: overridden methods fromjava.nio.Buffer
now returnByteBuffer
instead of more generalBuffer
. Unfortunately this breaks bytecode generation for the memory:ByteBuffer::limit
cannot be casted toByteBuffer.(Int) -> Buffer
. It can be casted toByteBuffer.(Int) -> ByteBuffer
, but not in java 8.The fix is easy enough: upcast the object to Buffer before calling the method. In bytecode this corresponds to using Buffer::limit method instead of
ByteBuffer::limit
. This works both with older and newer java.The same applies to Buffer::position
Arguably, one can change other references to
ByteBuffer
methods to the parentBuffer
interface, but I decided to keep the changes minimal.Closes #28. Supersedes #31.