Skip to content
New issue

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

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

Already on GitHub? # to your account

Support generating locals that reference generated class types (#146) #151

Merged
merged 1 commit into from
Dec 2, 2019

Conversation

kkoser
Copy link
Contributor

@kkoser kkoser commented Nov 27, 2019

We have had support for the const-class operation, but it was only possible to
fill a local with the value of a Class object you could reference in the geneeration
context. This meant that it was not possible to generate a reference to a generated
class, as it did not exist in the class loader until after the generation was finished
and the new class loader could be used.

The real issue here is the restriction of the loadConstant() method, which requires an
actual Class object. This class object gets turned into a string internally for code
generation, and so we don't actually need a real class to fill the variable value
correctly. Using a TypeId will still get converted to a ConstantInsn under the hood,
and the value will be assigned correctly.

…din#146)

We have had support for the const-class operation, but it was only possible to
fill a local with the value of a Class object you could reference in the geneeration
context. This meant that it was not possible to generate a reference to a generated
class, as it did not exist in the class loader until after the generation was finished
and the new class loader could be used.

The real issue here is the restriction of the loadConstant() method, which requires an
actual Class object. This class object gets turned into a string internally for code
generation, and so we don't actually need a real class to fill the variable value
correctly. Using a TypeId will still get converted to a ConstantInsn under the hood,
and the value will be assigned correctly.
@kkoser kkoser merged commit b36192c into linkedin:master Dec 2, 2019
kkoser added a commit to kkoser/dexmaker that referenced this pull request Dec 2, 2019
kkoser added a commit to kkoser/dexmaker that referenced this pull request Dec 2, 2019
kkoser added a commit to kkoser/dexmaker that referenced this pull request Dec 2, 2019
kkoser added a commit that referenced this pull request Dec 4, 2019
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants