[ 
https://issues.apache.org/jira/browse/GROOVY-11159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17755952#comment-17755952
 ] 

Jochen Theodorou commented on GROOVY-11159:
-------------------------------------------

I  would do for example TypeReference, ClassNode and maybe something like 
ResolvedClass. in class A extends B, A would become a ClassNode with all the 
fields and methods, B would be a TypeReference maybe to be resolved by the 
compiler. If B is backed by a to be compiled class, it points to a ClassNode, 
otherwise it would point to a ResolvedClass. And maybe I would even have 
another class you can use to get all the fields and methods from, which you get 
from ResolvedClass and maybe also ClassNode. Then we could move the lazy init 
to that part.... Of course ClassNode would not need the lazy init anymore in 
this scenario.

Well, just an idea. and of course it will break about every transform there is.

> ClassNode: separate type definition information
> -----------------------------------------------
>
>                 Key: GROOVY-11159
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11159
>             Project: Groovy
>          Issue Type: Improvement
>            Reporter: Eric Milles
>            Priority: Minor
>
> ClassNode is used to represent type definitions as well as type references.  
> There are a lot of data members that apply only to type definitions.  
> However, every reference pays the cost.  ClassNode could have a single 
> reference to another class (essentially a struct) that holds all the 
> definition information.  With this, type references would only have one 
> reference (initialized to null) instead of all those fields.
> Fields:
> * modifiers
> * syntheticPublic
> * superClass
> * interfaces
> * mixins
> * objectInitializers
> * constructors
> * methods
> * methodsList
> * fields
> * properties
> * fieldIndex
> * module
> * compileUnit
> * staticClass
> * scriptBody
> * script
> * innerClasses
> * transformInstances?
> * lazyInitDone
> * lazyInitLock
> * clazz
> * permittedSubclasses
> * recordComponents



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to