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

RFC: Add API for programatic tracing of specializations/new methods #15860

Merged
merged 3 commits into from
Apr 15, 2016

Conversation

Keno
Copy link
Member

@Keno Keno commented Apr 13, 2016

Suppose, hypothetically that some person may want to write a debugger for julia. In that case said person would want to be informed when new methods are added to the system such that they can be checked against any breakpoint conditions that the debugger may have. This adds a minimal such implementation that allows one to register a callback to be informed of such events. Potential points of design discussion:

  • Only have once callback with a flag to indicate the kind of event?
  • Are these the only places where new specializations/methods are getting added?
  • Do we have a problem with calling back arbitrary code at these points.

@JeffBezanson

@Keno
Copy link
Member Author

Keno commented Apr 15, 2016

@JeffBezanson thoughts on this change?

@@ -210,6 +210,7 @@ typedef struct _jl_lambda_info_t {
// and so unspecialized will be created for each linfo instead of once in linfo->def.
// 0 = no, 1 = yes, 2 = not yet known
uint8_t needs_sparam_vals_ducttape : 2;
uint8_t traced : 1;
Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will need a comment explaining this field.

@JeffBezanson
Copy link
Sponsor Member

Yes, these are the only places where new methods and specializations are added. I guess we can just try this and see how it goes.

This adds a new API that allows code to register two callbacks to be informed of new
specializations/methods in the system:
- jl_register_tracer, which will call the passed callback on any newly added specialization
  of a lambda info that has the `traced` flag set.
- jl_register_newmeth_tracer, which will call the passed callback on any newly created method
  in the system.
@Keno
Copy link
Member Author

Keno commented Apr 15, 2016

I'll take that as "go ahead and merge".

@Keno Keno merged commit b991db1 into master Apr 15, 2016
vtjnash added a commit that referenced this pull request Apr 15, 2016
This reverts commit b991db1, reversing
changes made to 9492c53.
@tkelman tkelman deleted the kf/tracing branch April 15, 2016 18:46
Keno added a commit that referenced this pull request Apr 16, 2016
Keno added a commit that referenced this pull request Apr 16, 2016
Revert "Revert "Merge pull request #15860 from JuliaLang/kf/tracing""
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.

None yet

2 participants