compiler/TLLVMCodeGenerator.st
changeset 10 2b9beeac547e
parent 9 569bf5707c7e
child 11 6d39860d0fdb
equal deleted inserted replaced
9:569bf5707c7e 10:2b9beeac547e
   163 
   163 
   164 acceptMethodNode: aMethodNode 
   164 acceptMethodNode: aMethodNode 
   165     | binding |
   165     | binding |
   166 
   166 
   167     binding := aMethodNode binding.
   167     binding := aMethodNode binding.
   168     function := context module 
   168     binding mclass isMetaclass ifTrue:[
   169                     addFunctionNamed: (self class llvmFunctionNameForClass: currentClass selector: currentMethod selector)      
   169         function := context module 
   170                     type: (LLVMType 
   170                         addFunctionNamed: (self class llvmFunctionNameForClass: currentClass selector: currentMethod selector)
   171                             function: { binding receiverType asLLVMTypeInModule: context module } ,
   171                         type: (LLVMType 
   172                                        (binding parameterTypes collect:[:t|t asLLVMTypeInModule: context module])
   172                                 function:  (binding parameterTypes collect:[:t|t asLLVMTypeInModule: context module])
   173                             returning: (binding returnType asLLVMTypeInModule: context module)).
   173                                 returning: (binding returnType asLLVMTypeInModule: context module)).
       
   174     ] ifFalse:[ 
       
   175         function := context module 
       
   176                         addFunctionNamed: (self class llvmFunctionNameForClass: currentClass selector: currentMethod selector)      
       
   177                         type: (LLVMType 
       
   178                                 function:  {binding receiverType asLLVMTypeInModule: context module } ,
       
   179                                            (binding parameterTypes collect:[:t|t asLLVMTypeInModule: context module])
       
   180                                 returning: (binding returnType asLLVMTypeInModule: context module)).
       
   181         (function parameterAt: 1) name: 'self'.
       
   182     ].
   174     asm := function builder.
   183     asm := function builder.
   175     (function parameterAt: 1) name: 'self'.
       
   176     super acceptMethodNode: aMethodNode
   184     super acceptMethodNode: aMethodNode
   177 
   185 
   178     "Created: / 31-08-2015 / 09:42:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   186     "Created: / 31-08-2015 / 09:42:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   179     "Modified: / 02-09-2015 / 21:31:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   187     "Modified: / 14-09-2015 / 15:37:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   180 !
   188 !
   181 
   189 
   182 acceptOptimizedNode: anOptimizedNode 
   190 acceptOptimizedNode: anOptimizedNode 
   183     self notYetImplemented
   191     self notYetImplemented
   184 
   192