Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

treatment of new in SymbExe #6

Closed
rgrig opened this issue Jan 16, 2012 · 2 comments
Closed

treatment of new in SymbExe #6

rgrig opened this issue Jan 16, 2012 · 2 comments

Comments

@rgrig
Copy link
Owner

rgrig commented Jan 16, 2012

The type inferer wrongly identifies which objects are initialized by INVOKESPECIAL. It is possible, for example, to execute the same NEW twice before executing a corresponding INVOKESPECIAL.

@rgrig
Copy link
Owner Author

rgrig commented Jan 18, 2012

It does not work to use an object ID instead of a (NEW) instruction ID. If a NEW instruction is executed twice, then symbolic execution has no choice but to unify the two object IDs, therefore losing any advantage. (Unifying in a set would diverge.)

It also does not work to keep track of all objects that are created and not yet initialized because there might be an unbounded number of those. We certainly don't want to count how many times loops are executed, anyway.

The current implementation is OK, but we must also implement an extra check. Whenever we execute a NEW, there must exist no initialized object that was created by the same NEW.

@rgrig rgrig closed this as completed Jan 18, 2012
@rgrig
Copy link
Owner Author

rgrig commented Jan 18, 2012

Fixed by b0563cb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant