CompiledCodeObjectTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 29 Aug 2018 21:32:19 +0100
changeset 50 7f439240d923
parent 44 2bf743f565e6
permissions -rw-r--r--
UDIS86: fixed crash caused by keeping `ud_t` structure on smalltalk heap ...and this the structure may move. Thisx resulted on hard-to-debug heap corruptions because `ud_t.asm_buf` is initializad to a pointer to `ud_t.asm_buf_int`. Therefore when the bytearray moved, the pointer become invalid and subsequent call to `ud_disassemble()` smashed whatever object happened to be where the bytearray were. The fix is straigtforward, use `ExternalBytes`! Sigh.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     1
"
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     2
    Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     3
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     4
    Permission is hereby granted, free of charge, to any person obtaining a copy
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     5
    of this software and associated documentation files (the 'Software'), to deal
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     6
    in the Software without restriction, including without limitation the rights
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     7
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     8
    copies of the Software, and to permit persons to whom the Software is
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
     9
    furnished to do so, subject to the following conditions:
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    10
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    11
    The above copyright notice and this permission notice shall be included in all
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    12
    copies or substantial portions of the Software.
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    13
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    14
    THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    15
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    16
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    17
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    18
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    19
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    20
    SOFTWARE.
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    21
"
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
"{ Package: 'jv:dragonfly' }"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"{ NameSpace: Smalltalk }"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
TestCase subclass:#CompiledCodeObjectTests
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	instanceVariableNames:'jitEnabled'
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	classVariableNames:''
9
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    29
	poolDictionaries:'CompiledCodeObjectSectionFormat'
12
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    30
	category:'System-Compiler-Interface-Tests'
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!CompiledCodeObjectTests class methodsFor:'documentation'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
24
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    35
copyright
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    36
"
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    37
    Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    38
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    39
    Permission is hereby granted, free of charge, to any person obtaining a copy
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    40
    of this software and associated documentation files (the 'Software'), to deal
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    41
    in the Software without restriction, including without limitation the rights
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    42
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    43
    copies of the Software, and to permit persons to whom the Software is
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    44
    furnished to do so, subject to the following conditions:
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    45
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    46
    The above copyright notice and this permission notice shall be included in all
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    47
    copies or substantial portions of the Software.
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    48
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    49
    THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    50
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    51
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    52
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    53
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    54
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    55
    SOFTWARE.
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    56
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    57
"
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    58
!
5aace704e3c8 Added some examples showing use of CompiledCodeObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    59
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
documentation
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    documentation to be added.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    [author:]
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
        Jan Vrany <jan.vrany@fit.cvut.cz>
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    [instance variables:]
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    [class variables:]
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    [see also:]
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
!CompiledCodeObjectTests methodsFor:'running'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
setUp
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    "common setup - invoked before testing."
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    super setUp.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    jitEnabled := ObjectMemory justInTimeCompilation: true.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    "Modified: / 06-12-2015 / 00:10:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
tearDown
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    "common cleanup - invoked after testing."
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    super tearDown.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    ObjectMemory justInTimeCompilation: jitEnabled
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    "Modified: / 06-12-2015 / 00:11:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
!CompiledCodeObjectTests methodsFor:'test data'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
methodWithConstant
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    ^ 123
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    "Created: / 06-12-2015 / 00:15:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
methodWithLiteral
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ^ #(Literal 2)
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    "Created: / 07-12-2015 / 16:52:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
methodWithSend
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    ^ OrderedCollection size + 10
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    "Created: / 07-12-2015 / 16:51:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
!CompiledCodeObjectTests methodsFor:'tests'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
test_01
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   119
    | object section |
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    self ensureCompiled: #methodWithConstant.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
    object := (self class >> #methodWithConstant) codeObject.
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   122
    self assert: object compiledCode == (self class >> #methodWithConstant).
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   123
    self assert: object sections size == 2. "/ No literals no ILC's, only code and special cells
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   124
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   125
    section := object sectionNamed: '.text'.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   126
    self assert: section format = SectionFormatText.
11
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   127
    self assert: section size > 1.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   128
    self assert: ((1 to: section size) allSatisfy:[:i | (section at: i) <= 255 ]).
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   130
    section := object sectionNamed: '.stx.codeobj.specialcells'. 
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   131
    self assert: section format = SectionFormatINTVector.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   132
    self assert: section size == 1.
11
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   133
    self should: [ section at: 0 ] raise: PrimitiveFailure.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   134
    self assert: (section at: 1) isInteger.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   135
    self should: [ section at: 2 ] raise: PrimitiveFailure.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   136
    self should: [ section at: 0 put: 123 ] raise: PrimitiveFailure.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   137
    self should: [ section at: 1 put: 'Invalid' ] raise: PrimitiveFailure.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   138
    self should: [ section at: 2 put: 123 ] raise: PrimitiveFailure.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   139
    section at: 1 put: 10.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   140
    self assert: (section at: 1) == 10.
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    self ensureCompiled: #methodWithLiteral.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    object := (self class >> #methodWithLiteral) codeObject.
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   144
    self assert: object sections size == 3. "/ No ILC's but literals, code and special cells
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   146
    section := object sectionNamed: '.text'.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   147
    section := object sectionNamed: '.stx.codeobj.specialcells'. 
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   148
    section := object sectionNamed: '.stx.codeobj.literals'. 
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   149
    self assert: section format = SectionFormatOBJVector.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   150
    self assert: section size == 1.
11
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   151
    self assert: (section at: 1) = #(#Literal 2). 
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   152
    self assert: (self methodWithLiteral) = #(#Literal 2). 
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   153
    section at: 1 put: 123.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   154
    self assert: (section at: 1) == 123. 
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   155
    self assert: (self methodWithLiteral) == 123.
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   156
9
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   157
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    self ensureCompiled: #methodWithSend.
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   159
    object := (self class >> #methodWithSend) codeObject.
11
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   160
    self assert: object sections size == 4. "/ Literals (for the selector), ILC, code and special cells
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   161
    section := object sectionNamed: '.text'.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   162
    section := object sectionNamed: '.stx.codeobj.specialcells'. 
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   163
    section := object sectionNamed: '.stx.codeobj.ilcs'. 
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   164
    self assert: section format = SectionFormatILCVector.
11
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   165
    self assert: section size == 2.
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    "Created: / 06-12-2015 / 00:15:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   168
    "Modified: / 23-01-2016 / 22:15:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cfe5c9d79fbc Added CompiledCodeObjectSection>>at: and at:put:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   169
12
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   170
!
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   171
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   172
test_02a
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   173
    "Tests creation of new code object for method which has
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   174
     not yet been compiled"
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   175
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   176
    | method object section |
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   177
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   178
    method := Method new.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   179
    method numberOfArgs: 0.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   180
    method numberOfVars: 0.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   181
    method stackSize: 0.          
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   182
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   183
    object := CompiledCodeObject forCompiledCode: method text: 6 literals: 1 ilcs: 0.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   184
    self assert: object compiledCode == method.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   185
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   186
    section := object sectionNamed: '.text'.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   187
    self assert: section format = SectionFormatText.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   188
    self assert: section size == 6.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   189
    self assert: ((1 to: section size) allSatisfy:[:i | (section at: i) == 0 ]).
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   190
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   191
    section := object sectionNamed: '.stx.codeobj.literals'.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   192
    self assert: section format = SectionFormatOBJVector.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   193
    self assert: section size == 1.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   194
    self assert: ((1 to: section size) allSatisfy:[:i | (section at: i) isNil ]).
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   195
43
ed4fcb347f0f Changed CompiledCode >> #codeObject to return nil if no code object is associated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   196
    method code: (object sectionNamed: '.text') address.
ed4fcb347f0f Changed CompiledCode >> #codeObject to return nil if no code object is associated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   197
    self assert: method codeObject address == object address.
ed4fcb347f0f Changed CompiledCode >> #codeObject to return nil if no code object is associated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   198
12
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   199
    "Created: / 24-01-2016 / 20:49:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   200
!
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   201
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   202
test_02b
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   203
    "Tests creation of new code object for method which has
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   204
     not yet been compiled"
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   205
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   206
    | method object section |
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   207
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   208
    method := Method new.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   209
    method numberOfArgs: 0.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   210
    method numberOfVars: 0.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   211
    method stackSize: 0.          
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   212
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   213
    object := CompiledCodeObject forCompiledCode: method text: 0 literals: 1 ilcs: 0.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   214
    self assert: object compiledCode == method.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   215
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   216
    self assert: (object hasSectionNamed: '.text') not.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   217
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   218
    object allocateTextSection: 10.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   219
    section := object sectionNamed: '.text'.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   220
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   221
    self assert: section format = SectionFormatText.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   222
    self assert: section size == 10.
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   223
    self assert: ((1 to: section size) allSatisfy:[:i | (section at: i) == 0 ]).
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   224
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   225
    "Created: / 24-01-2016 / 20:50:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
!CompiledCodeObjectTests methodsFor:'utilities'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
ensureCompiled: selector
44
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
   231
    self skipIf: ObjectMemory justInTimeCompilation not description: 'Builtin JIT not available'.
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
    ((self class >> selector) code isNil or:[ (self class >> selector) byteCode isNil ]) ifTrue:[
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
        self class recompile: selector.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
        self assert: (self class >> selector) code isNil.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
        self perform: selector.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
        self assert: (self class >> selector) code notNil.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    ]
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    "Created: / 06-12-2015 / 00:13:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
44
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
   240
    "Modified: / 18-08-2016 / 11:47:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
!CompiledCodeObjectTests class methodsFor:'documentation'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
version_HG
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
    ^ '$Changeset: <not expanded> $'
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249