From: <fra...@us...> - 2009-06-16 05:12:08
|
Revision: 1633 http://javapathfinder.svn.sourceforge.net/javapathfinder/?rev=1633&view=rev Author: frankrimlinger Date: 2009-06-16 05:12:07 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Got rid of the lineNumber==-1 hack for synthetic instructions. This was useful to get up and running but now need a genuine implementation. SyntheticInstructions now must implement getSyntheticPosition(), and should throw IllegalStateException if getPosition() or getOffset() is called. This is so we can hunt down all the places that a synthetic position is used and make sure the supplied implementations make sense. BadPlace, OSplace, and AbstractUconPlace all return 0 for the synthetic position. ATHROWCREATOR and ACATCHHANDLER getSyntheticPosition() returns the position of the parent instruction. This is necessary for correct propagation of context. In the case of ATHROWCREATOR, the parent is an ATHROW. In the case of ACATCHHANDLER, on of INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, or INVOKEVIRTUAL. ATHROWHANDLER returns a synthetic position of 0. We take the point of view that only parameters have context in a handler. Punched in various patches to call getSyntheticPosition as appropriate. With all this in place, no effect on the itsAWrap.main context bug. But certainly I am on the right track. Modified Paths: -------------- branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/ExceptionHandlerUtil.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/MangoFormalInterface.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/MangoInstruction.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/MangoInterface.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/MangoInvokeInstruction.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/MethodUtil.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/ACATCHHANDLER.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/ATHROW.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/ATHROWCREATOR.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/ATHROWHANDLER.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/AbstractUconPlace.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/BadPlace.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/BeginningOfTime.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/INVOKECLINIT.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/INVOKEINTERFACE.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/INVOKESPECIAL.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/INVOKESTATIC.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/INVOKETARGET.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/INVOKEVIRTUAL.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/OSplace.java branches/mango/MangoJPF/javapathfinder-mango-bridge/mango/scanner/bytecode/SyntheticInstruction.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |