Fix byte array element type in the bytecode transformation code #357
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.
In JVM,
baload
andbastore
instructions are used to access both byte arrays and boolean arrays.In the
SharedMemoryTransformer
class, the instruction is used to determine the type of elements read from an array.This type is then used to box the read value and pass it into the injected method
afterRead(value)
, which, in turn, stores the value into trace to display it later.For
baload
andbastore
instructions, theBOOLEAN_TYPE
was used. Because of this, in the trace the byte values could have been displayed as boolean, i.e. narrowed totrue
/false
. This PR fixes this problem by usingBYTE_TYPE
instead.However, now boolean values are represented in the trace as byte values
0
or1
. This is a lesser problem.It is unclear how to distinguish byte/boolean in this situation, due to a dynamic nature of
baload
/bastore
instructions which are used for both these types.