[ https://issues.apache.org/jira/browse/BCEL-195?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Emmanuel Bourg updated BCEL-195: -------------------------------- Affects Version/s: 6.0 > 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 > Affects Versions: 6.0 > Reporter: Mark Roberts > > [Revision 1532198|http://svn.apache.org/r1532198] 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)