LLVMDIBuilder.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 17 Sep 2015 17:17:56 +0100
changeset 42 23ae490859cd
parent 41 e4cbc8e75207
child 48 86d3a994614f
permissions -rw-r--r--
Fixed LLVMExamples>>example7_factorial_with_debug_info Pass DIFile instead of DICompileUnit to #createTypeFunctionIn:parameterTypes: Fixed #createParameterVariable: - parameters are numbered starting with 1.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
    Copyright (C) 2015-now Jan Vrany
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
    This code is not an open-source (yet). You may use this code
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
    for your own experiments and projects, given that:
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
    * all modification to the code will be sent to the
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
      original author for inclusion in future releases
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
    * this is not used in any commercial software
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
    This license is provisional and may (will) change in
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
    a future.
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ Package: 'jv:llvm_s' }"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
"{ NameSpace: Smalltalk }"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    18
LLVMDisposableObject subclass:#LLVMDIBuilder
29
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	instanceVariableNames:''
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	classVariableNames:''
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    21
	poolDictionaries:'LLVMModuleFlagBehavior'
29
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
	category:'LLVM-S-Core'
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
!LLVMDIBuilder class methodsFor:'documentation'!
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
copyright
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    Copyright (C) 2015-now Jan Vrany
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    This code is not an open-source (yet). You may use this code
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    for your own experiments and projects, given that:
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    * all modification to the code will be sent to the
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
      original author for inclusion in future releases
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    * this is not used in any commercial software
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    This license is provisional and may (will) change in
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    a future.
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
! !
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    43
!LLVMDIBuilder class methodsFor:'instance creation'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    44
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    45
newForModule: module
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    46
    | dib |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    47
    dib := LLVMCEXT NewDIBuilder: module.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    48
    "/ Now we have to add module flags otherwise llc won't
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    49
    "/ produce debug info.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    50
    "/ See http://lists.llvm.org/pipermail/llvm-dev/2014-October/077815.html
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    51
    module addFlag: 'Dwarf Version' value: (LLVMConstant uint32: 4) asLLVMMetadata behavior: LLVMModuleFlagBehaviorWarning.  
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    52
    module addFlag: 'Debug Info Version' value: (LLVMConstant uint32: 3) asLLVMMetadata behavior: LLVMModuleFlagBehaviorError.  
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    53
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    54
    ^ dib
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    55
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    56
    "Created: / 13-08-2015 / 06:35:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    57
    "Modified: / 15-08-2015 / 23:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    58
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    59
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    60
!LLVMDIBuilder methodsFor:'assertions'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    61
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    62
assertIsStringOrFilename: value
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    63
    <resource: #skipInDebuggersWalkback>
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    64
    self assert: (value isString or:[ value isFilename ]) message: 'value is not a String or Filename'
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    65
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    66
    "Created: / 13-08-2015 / 06:47:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    67
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    68
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    69
!LLVMDIBuilder methodsFor:'building'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    70
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    71
createAutomaticVariable: name in: scope file: file line: line type: type
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    72
    ^ self createAutomaticVariable: name in: scope file: file line: line type: type flags: 0
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    73
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    74
    "Created: / 14-08-2015 / 13:58:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    75
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    76
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    77
createAutomaticVariable: name in: scope file: file line: line type: type flags: flags
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    78
    ^ self createAutomaticVariable: name in: scope file: file line: line type: type flags: flags preserve: true.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    79
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    80
    "Created: / 14-08-2015 / 13:57:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    81
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    82
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    83
createAutomaticVariable: name in: scope file: file line: line type: type flags: flags preserve: preserve
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    84
    "Creates a debg info metadata describing a local variable"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    85
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    86
    self assertIsString: name.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    87
    self assertIsDILocalScope: scope.  
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    88
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    89
    self assertIsIntegerUnsigned: line.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    90
    self assertIsDIType: type.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    91
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    92
    self assertIsBoolean: preserve.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    93
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    94
    ^ LLVMCEXT DIBuilderCreateAutoVariable: self _: scope _: name _: file _: line _: type _: (preserve ifTrue:[1] ifFalse:[0]) _: flags
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    95
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    96
    "Created: / 14-08-2015 / 13:56:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    97
    "Modified: / 17-09-2015 / 17:00:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    98
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    99
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   100
createCompilationUnit: path language: lang producer: producer
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   101
    ^ self createCompilationUnit: path language: lang producer: producer runtimeVersion: 0 optimized: false flags: ''
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   102
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   103
    "Created: / 13-08-2015 / 06:58:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   104
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   105
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   106
createCompilationUnit: path language: lang producer: producer runtimeVersion: rv optimized: isOptimized flags: compilerFlags
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   107
    | filename |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   108
    self assertIsStringOrFilename: path.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   109
    self assertIsIntegerUnsigned: lang.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   110
    self assertIsString: producer.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   111
    self assertIsIntegerUnsigned: rv.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   112
    self assertIsBoolean: isOptimized.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   113
    self assertIsString: compilerFlags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   114
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   115
    filename := path asFilename.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   116
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   117
    ^ LLVMCEXT DIBuilderCreateCompileUnit: self _: lang _: filename baseName _: filename directory pathName _: producer _: (isOptimized ifTrue:[1] ifFalse:[0]) _: compilerFlags _: rv
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   118
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   119
    "Created: / 13-08-2015 / 06:47:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   120
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   121
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   122
createExpression
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   123
    ^ LLVMCEXT DIBuilderCreateExpression: self _: ExternalAddress new _: 0
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   124
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   125
    "Created: / 14-08-2015 / 14:06:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   126
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   127
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   128
createFile: path
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   129
    | filename |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   130
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   131
    self assertIsStringOrFilename: path.    
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   132
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   133
    filename := path asFilename.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   134
    ^ LLVMCEXT DIBuilderCreateFile: self _: filename baseName _: filename directory pathName
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   135
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   136
    "Created: / 15-08-2015 / 22:08:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   137
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   138
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   139
createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   140
    ^ self createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: 0
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   141
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   142
    "Created: / 14-08-2015 / 13:47:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   143
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   144
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   145
createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   146
    ^ self createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: line
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   147
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   148
    "Created: / 14-08-2015 / 13:47:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   149
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   150
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   151
createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   152
    ^ self createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: function name
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   153
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   154
    "Created: / 14-08-2015 / 13:46:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   155
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   156
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   157
createFunction: name in: scope file: file  line: line type: type function: function local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: linkageName
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   158
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   159
    self assertIsDIScope: scope.          
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   160
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   161
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   162
    self assertIsIntegerUnsigned: line.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   163
    self assertIsFunctionValue: function.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   164
    self assertIsBoolean: isLocal.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   165
    self assertIsBoolean: isDefinition.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   166
    self assertIsBoolean: isOptimized.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   167
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   168
    self assertIsIntegerUnsigned: scopeLine.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   169
    self assertIsString: linkageName.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   170
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   171
    ^ LLVMCEXT DIBuilderCreateFunction: self  _: scope _: name _: linkageName _: file _: line _: type _: (isLocal ifTrue:[1] ifFalse:[0]) _: (isDefinition ifTrue:[1] ifFalse:[0]) _: scopeLine _: flags _: (isOptimized ifTrue:[1] ifFalse:[0]) _: function.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   172
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   173
    "Created: / 14-08-2015 / 13:46:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   174
    "Modified: / 17-09-2015 / 17:04:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   175
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   176
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   177
createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   178
    ^  self createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index preserve: true
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   179
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   180
    "Created: / 14-08-2015 / 13:54:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   181
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   182
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   183
createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index  preserve: preserve
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   184
    "Creates a debg info metadata describing a local variable"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   185
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   186
    self assertIsString: name.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   187
    self assertIsDILocalScope: scope.  
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   188
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   189
    self assertIsIntegerUnsigned: line.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   190
    self assertIsDIType: type.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   191
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   192
    self assertIsIntegerUnsigned: index.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   193
    self assertIsBoolean: preserve.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   194
42
23ae490859cd Fixed LLVMExamples>>example7_factorial_with_debug_info
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   195
    ^ LLVMCEXT DIBuilderCreateParameterVariable: self _: scope _: name _: file _: line _: type _: (preserve ifTrue:[1] ifFalse:[0]) _: flags _: index
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   196
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   197
    "Created: / 14-08-2015 / 13:54:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42
23ae490859cd Fixed LLVMExamples>>example7_factorial_with_debug_info
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   198
    "Modified: / 17-09-2015 / 17:13:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   199
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   200
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   201
createTypeFunctionIn: file parameterTypes: parameterTypes
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   202
    | parameterTypesAsTuple |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   203
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   204
    self assertIsDIFile: file.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   205
    self assertIsDITypeArray: parameterTypes.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   206
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   207
    parameterTypesAsTuple := LLVMCEXT MDNode2: LLVM GetGlobalContext _: parameterTypes asLLVMObjectArray _: parameterTypes size.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   208
    ^ LLVMCEXT DIBuilderCreateSubroutineType: self  _: file _: parameterTypesAsTuple
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   209
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   210
    "Created: / 14-08-2015 / 08:57:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   211
    "Modified: / 17-09-2015 / 17:01:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   212
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   213
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   214
createTypeScalar: name size: sizeInBits alignment: alignmentInBits encoding: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   215
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   216
    self assertIsInteger64Unsigned: sizeInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   217
    self assertIsInteger64Unsigned: alignmentInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   218
    self assertIsIntegerUnsigned: alignmentInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   219
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   220
    ^ LLVMCEXT DIBuilderCreateBasicType: self _: name _: sizeInBits _: alignmentInBits _: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   221
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   222
    "Created: / 14-08-2015 / 07:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   223
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   224
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   225
createTypeScalar: name type: type encoding: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   226
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   227
    self assertIsType: type.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   228
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   229
    ^ self createTypeScalar: name size: type sizeInBits alignment:type alignmentInBits encoding: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   230
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   231
    "Created: / 14-08-2015 / 09:17:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   232
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   233
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   234
finish
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   235
    LLVMCEXT DIBuilderFinalize: self
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   236
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   237
    "Created: / 14-08-2015 / 13:11:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   238
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   239
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   240
insertDeclare: alloca variable: variable expression: expr location: location atEndOf: basicblock
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   241
    "Inserts @llvm.dbg.declare() intrinsic at the end of given `basicblock`"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   242
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   243
    self assertIsValue: alloca.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   244
    self assertIsDILocalVariable: variable.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   245
    self assertIsDIExpression: expr.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   246
    self assertIsDILocation: location.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   247
    self assertIsBasicBlock: basicblock.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   248
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   249
    ^ LLVMCEXT DIBuilderInsertDeclareAtEnd: self  _: alloca _: variable _: expr _: location _: basicblock
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   250
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   251
    "Created: / 15-08-2015 / 23:44:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   252
    "Modified: / 17-09-2015 / 17:03:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   253
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   254
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   255
insertValue: alloca variable: variable expression: expr location: location atEndOf: basicblock offset: offset
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   256
    "Inserts @llvm.dbg.value() intrinsic at the end of given `basicblock`"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   257
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   258
    self assertIsValue: alloca.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   259
    self assertIsDILocalVariable: variable.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   260
    self assertIsDIExpression: expr.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   261
    self assertIsDILocation: location.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   262
    self assertIsBasicBlock: basicblock.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   263
    self assertIsInteger64Unsigned: offset.  
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   264
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   265
    ^ LLVMCEXT DIBuilderInsertValueAtEnd: self _: alloca _: offset _: variable _: expr _: location _: basicblock
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   266
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   267
    "Created: / 15-08-2015 / 23:49:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   268
    "Modified: / 17-09-2015 / 17:03:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   269
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   270
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   271
!LLVMDIBuilder methodsFor:'initialization & release'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   272
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   273
dispose
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   274
    "superclass LLVMDisposableObject says that I am responsible to implement this method"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   275
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   276
    ^ LLVMCEXT DIBuilderDestroy: self
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   277
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   278
    "Modified: / 14-08-2015 / 13:20:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   279
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   280