LLVMDIBuilder.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 11 Aug 2016 09:12:17 +0100
changeset 73 466c492b0062
parent 55 41b3437f1fc7
permissions -rw-r--r--
Oops, fixed examples after a rename #store:_: to #store:at:
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
48
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    45
new
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    46
    self shouldNotImplement. "/ use newForModule: instead
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    47
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    48
    "Created: / 05-10-2015 / 09:29:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    49
!
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    50
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    51
newForModule: module
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    52
    | dib |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    53
    dib := LLVMCEXT NewDIBuilder: module.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    54
    "/ 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
    55
    "/ produce debug info.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    56
    "/ 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
    57
    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
    58
    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
    59
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    60
    ^ dib
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
    "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
    63
    "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
    64
! !
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
!LLVMDIBuilder methodsFor:'assertions'!
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
assertIsStringOrFilename: value
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    69
    <resource: #skipInDebuggersWalkback>
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    70
    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
    71
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    72
    "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
    73
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    74
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    75
!LLVMDIBuilder methodsFor:'building'!
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
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: 0
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: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
    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
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    84
    ^ 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
    85
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    86
    "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
    87
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    88
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    89
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
    90
    "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
    91
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    92
    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
    93
    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
    94
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    95
    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
    96
    self assertIsDIType: type.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    97
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    98
    self assertIsBoolean: preserve.
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
    ^ 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
   101
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   102
    "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
   103
    "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
   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
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   107
    ^ 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
   108
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   109
    "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
   110
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   111
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   112
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
   113
    | filename |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   114
    self assertIsStringOrFilename: path.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   115
    self assertIsIntegerUnsigned: lang.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   116
    self assertIsString: producer.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   117
    self assertIsIntegerUnsigned: rv.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   118
    self assertIsBoolean: isOptimized.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   119
    self assertIsString: compilerFlags.
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
    filename := path asFilename.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   122
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   123
    ^ 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
   124
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   125
    "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
   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
createExpression
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   129
    ^ 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
   130
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   131
    "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
   132
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   133
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   134
createFile: path
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   135
    | filename |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   136
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   137
    self assertIsStringOrFilename: path.    
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
    filename := path asFilename.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   140
    ^ 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
   141
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   142
    "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
   143
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   144
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   145
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   146
    ^ self createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: 0
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   147
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   148
    "Created: / 07-02-2016 / 07:59:39 / 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
   149
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   150
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   151
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   152
    ^ self createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: line
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   153
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   154
    "Created: / 07-02-2016 / 07:59:10 / 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
   155
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   156
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   157
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   158
    ^ self createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: name
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   159
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   160
    "Created: / 07-02-2016 / 07:58:40 / 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
   161
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   162
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   163
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: linkageName
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   164
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
   165
    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
   166
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   167
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   168
    self assertIsIntegerUnsigned: line.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   169
    self assertIsBoolean: isLocal.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   170
    self assertIsBoolean: isDefinition.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   171
    self assertIsBoolean: isOptimized.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   172
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   173
    self assertIsIntegerUnsigned: scopeLine.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   174
    self assertIsString: linkageName.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   175
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   176
    ^ 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])
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   177
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   178
    "Created: / 07-02-2016 / 07:57:51 / 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
   179
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   180
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   181
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
   182
    ^  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
   183
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   184
    "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
   185
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   186
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   187
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
   188
    "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
   189
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   190
    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
   191
    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
   192
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   193
    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
   194
    self assertIsDIType: type.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   195
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   196
    self assertIsIntegerUnsigned: index.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   197
    self assertIsBoolean: preserve.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   198
42
23ae490859cd Fixed LLVMExamples>>example7_factorial_with_debug_info
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   199
    ^ 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
   200
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   201
    "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
   202
    "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
   203
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   204
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   205
createTypeFunction: parameterTypes
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   206
    | parameterTypesAsTuple |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   207
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
   208
    self assertIsDITypeArray: parameterTypes.
33
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
    parameterTypesAsTuple := LLVMCEXT MDNode2: LLVM GetGlobalContext _: parameterTypes asLLVMObjectArray _: parameterTypes size.
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   211
    ^ LLVMCEXT DIBuilderCreateSubroutineType: self _: parameterTypesAsTuple
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   212
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   213
    "Created: / 06-02-2016 / 15:25:17 / 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
   214
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   215
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   216
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
   217
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   218
    self assertIsInteger64Unsigned: sizeInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   219
    self assertIsInteger64Unsigned: alignmentInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   220
    self assertIsIntegerUnsigned: alignmentInBits.
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
    ^ 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
   223
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   224
    "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
   225
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   226
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   227
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
   228
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   229
    self assertIsType: type.
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
    ^ 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
   232
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   233
    "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
   234
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   235
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   236
finish
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   237
    LLVMCEXT DIBuilderFinalize: self
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
    "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
   240
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   241
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   242
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
   243
    "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
   244
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   245
    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
   246
    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
   247
    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
   248
    self assertIsDILocation: location.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   249
    self assertIsBasicBlock: 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
    ^ 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
   252
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   253
    "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
   254
    "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
   255
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   256
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   257
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
   258
    "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
   259
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   260
    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
   261
    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
   262
    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
   263
    self assertIsDILocation: location.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   264
    self assertIsBasicBlock: basicblock.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   265
    self assertIsInteger64Unsigned: offset.  
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
    ^ 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
   268
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   269
    "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
   270
    "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
   271
! !
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
!LLVMDIBuilder methodsFor:'initialization & release'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   274
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   275
dispose
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   276
    "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
   277
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   278
    ^ LLVMCEXT DIBuilderDestroy: self
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
    "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
   281
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   282
48
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   283
!LLVMDIBuilder class methodsFor:'documentation'!
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   284
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   285
version_HG
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   286
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   287
    ^ '$Changeset: <not expanded> $'
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   288
! !
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   289