Skip to content

Lazy function loading#1563

Merged
mgudemann merged 21 commits intodiffblue:developfrom
NathanJPhillips:feature/lazy-loading
Jan 3, 2018
Merged

Lazy function loading#1563
mgudemann merged 21 commits intodiffblue:developfrom
NathanJPhillips:feature/lazy-loading

Conversation

@NathanJPhillips
Copy link
Contributor

This PR is quite long, I'd recommend reviewing commit-by-commit. It has been reviewed in part in Security Scanner but @smowton feels it is ready to be reviewed for inclusion in to CBMC now.

In the end this version eagerly loads all functions (although it does it by pulling them in explicitly). Individual users are free to alter this behaviour.

@NathanJPhillips
Copy link
Contributor Author

NathanJPhillips commented Nov 3, 2017

The first 7 commits are from #1558 (waiting to be merged). Do not merge this until that PR has been merged and this one has been rebased on it.

@smowton
Copy link
Contributor

smowton commented Nov 6, 2017

Tagging do-not-merge until predecessor PRs are merged

@smowton
Copy link
Contributor

smowton commented Nov 6, 2017

Note: needs @kroening review before merge

@smowton
Copy link
Contributor

smowton commented Nov 17, 2017

Now mergeable once test failures are addressed

@NathanJPhillips NathanJPhillips force-pushed the feature/lazy-loading branch 10 times, most recently from 76f0980 to 73c5007 Compare November 20, 2017 17:42
Creates the initialize methods again taking account of symbols added to the
symbol table during instantiation of lazy methods since they were first
created.
Made load_all_functions compatible with some functions having already been loaded by using the lazy load procedure
After convert each function in convert_lazy_method call instrument and typecheck
The symbolt was erased and recreated rather than being modified. This was bad as it invalidated the reference to the symbol that we now use later.
Load the main function into the symbol table before generating the entry point so that we have access to its parameter names
Allow attempts to load a function already loaded for non-lazy cases
Otherwise symbols won't have reproducible names
Remove line that depends on generated symbol name - Lucas confirms it wasn't the purpose of the test anyway.
Don't store followed type as type of superclass when doing clean cast as it may later change since we can now convert more methods after typechecking and doing this may change the type
@NathanJPhillips
Copy link
Contributor Author

I think everything is answered, fixed or an issue created to track it now. Tests are all passing.

@peterschrammel
Copy link
Member

TG passes too. Seems ready to go then.

@peterschrammel
Copy link
Member

peterschrammel commented Dec 21, 2017

I am sticking a 'do not merge' label on it to reduce risk for a planned TG release on 3rd Jan. We'll merge it right after that.

Besides, an approval is required by @tautschnig or @kroening.

@tautschnig
Copy link
Collaborator

Added a new label (Merge on 4 Jan) as there might be more coming up the next days that shouldn't get merged until then. Obviously I know nothing about about the release so feel free to change that.

@mgudemann mgudemann merged commit fabc99e into diffblue:develop Jan 3, 2018
@NathanJPhillips NathanJPhillips deleted the feature/lazy-loading branch January 3, 2018 15:55
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

Successfully merging this pull request may close these issues.

5 participants