[
https://issues.apache.org/jira/browse/BCEL-195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14306051#comment-14306051
]
Emmanuel Bourg commented on BCEL-195:
-------------------------------------
Do you think it would be possible to build a test case to secure this fix?
> addition of hashCode() to generic/Instruction.java breaks Targeters
> -------------------------------------------------------------------
>
> Key: BCEL-195
> URL: https://issues.apache.org/jira/browse/BCEL-195
> Project: Commons BCEL
> Issue Type: Bug
> Components: Main
> Reporter: Mark Roberts
>
> revision 1532198 added a hashCode() function to the Instruction class.
> Unfortunately, this breaks the Instruction targeting mechanism. I understand
> the goal of trying to reuse instructions - an 'iadd' is the same as any other
> 'iadd'. However, one 'goto 50' is not the same as another 'goto 50' due to
> the way Targeters are implemented. If branch instructions are reused, then
> only one entry gets put on the Targeter list. So when some api is used to
> modify the instruction list and location 50 becomes location 52 ONLY ONE of
> the branches gets updated. A very bad thing. So unless you modify the hash
> to special case branch instructions (and there might be other instructions
> needing special treatment as well) its broken. We fixed it by simply
> commenting the hash out to make things like they used to be and all works
> great.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)