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

Dynamic fields in MessageSendRecorderExtension inconvenient with respect to VCS #3

Open
LinqLover opened this issue Sep 4, 2020 · 6 comments

Comments

@LinqLover
Copy link
Contributor

The fact that dynamic fields in the MessageSendRecorderExtension class are implemented as new methods added to the class is quite inconvenient when working with changesets, Monticello versions, or any other version control system because normal usage of the recorder tool generates code changes.

Is it correct that this implementation approach was chosen for optimization reasons for the quick sends? Can we (silently) call #removeAllFields whenever a recording was finished to keep the image clean? I'd be happy to do this if you like it :-)

@marceltaeumel
Copy link
Contributor

InstVar access is orders of magnitude faster than dictionary lookup. Removing those fields after recording would destroy the data in the records you just created. :-) One could put those fields into the "*autogenerated" protocol. Would that help:

@LinqLover
Copy link
Contributor Author

One could put those fields into the "*autogenerated" protocol. Would that help:

Yes, this would probably be the most elegant solution. We could also call the protocol '*UserObjects-fields' or so instead to reduce the number of packages, but either of them would be fine.

I can submit a PR if you like :-)

@marceltaeumel
Copy link
Contributor

Squeak Trunk knows already about that "autogenerated" package. See Preferences class. Another existing class category would be "UserObjects", which will be cleared during release building.

@LinqLover
Copy link
Contributor Author

Should we merge them in the Trunk, too? What's their semantic difference?

@marceltaeumel
Copy link
Contributor

"UserObjects" is for classes, originates from Etoys for its uni-classes. "Autogenerated" is for methods. Granularity is the difference.

@LinqLover
Copy link
Contributor Author

Alright, I'll submit a PR soon unless you preempt me.

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

2 participants