CompiledCodeObject.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 15 Jun 2016 23:46:29 +0100
changeset 23 d2d9a2d4d6bf
parent 19 51a3540a2a10
child 24 5aace704e3c8
permissions -rw-r--r--
Added README, licenses and copyright notices.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
Copyright (c) 2015-now 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
     3
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
Permission is hereby granted, free of charge, to any person obtaining a copy
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
of this software and associated documentation files (the 'Software'), to deal
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
in the Software without restriction, including without limitation the rights
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
copies of the Software, and to permit persons to whom the Software is
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
furnished to do so, subject to the following conditions:
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
The above copyright notice and this permission notice shall be included in
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
all copies or substantial portions of the Software.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
THE SOFTWARE.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"
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
ExternalAddress subclass:#CompiledCodeObject
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    27
	instanceVariableNames:'compiledCode sections'
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	classVariableNames:''
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	poolDictionaries:''
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
	category:'System-Compiler-Interface'
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
!CompiledCodeObject primitiveDefinitions!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
%{
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
/*
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
 * includes, defines, structure definitions
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
 * and typedefs come here.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
 */
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
#include "../librun/mcompiler.h"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
%}
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
!CompiledCodeObject 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
    46
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
copyright
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
Copyright (c) 2015-now 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
    50
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
Permission is hereby granted, free of charge, to any person obtaining a copy
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
of this software and associated documentation files (the 'Software'), to deal
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
in the Software without restriction, including without limitation the rights
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
copies of the Software, and to permit persons to whom the Software is
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
furnished to do so, subject to the following conditions:
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
The above copyright notice and this permission notice shall be included in
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
all copies or substantial portions of the Software.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
THE SOFTWARE.
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
! !
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
!CompiledCodeObject class methodsFor:'instance creation'!
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
forCompiledCode: aCompiledCode
8
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    74
    "Given a method or block, return coresponding code object for it. 
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    75
     If the method or block is not yet dynamically compiled, throw an exception. 
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    76
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    77
     If you want to create a new compiled code object for given method or block, 
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    78
     use forCompiledCode:text:literals:ilcs:. For details, see comment there."
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    80
    | instance |
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    82
    instance := self new.
2
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
    stx_compiled_code_object code_object;
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    code_object = stxCompiledCodeObjectForCompiledCode(aCompiledCode);
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    86
    if (code_object == NULL) {
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    87
        instance = nil;
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    88
    } else {
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
        __externalAddressVal(instance) = code_object;
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    }
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
%}.
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    92
    instance isNil ifTrue:[ 
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    93
        self error: 'No code object associated with given method. Method not yet compiled?'
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    94
    ].
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    95
    instance setCompiledCode: aCompiledCode.
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    96
    ^ instance.
2
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
    "Created: / 07-12-2015 / 10:58:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    99
    "Modified: / 11-01-2016 / 09:39:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   100
    "Modified (comment): / 11-01-2016 / 16:26:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   101
!
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   102
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   103
forCompiledCode: compiledCode text: textSize"in bytes" literals: numLits ilcs: numILCs
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   104
    "Given a method or block, allocate a *new* code object for it. The text size
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   105
     passed may be 0 and could be allocated later using #allocateTextSection:.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   106
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   107
     If the method or block is already compiled, i.e., it has a compiled code object
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   108
     associated with it, throw an error.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   109
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   110
     If you want to create compiled code object for already compiled code,
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   111
     use forCompiledCode:.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   112
    "
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   113
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   114
    | instance failureReason |
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   115
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   116
    instance := self new.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   117
    failureReason := nil.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   118
%{    
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   119
    stx_compiled_code_object code_object;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   120
    INT _textSize;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   121
    INT _numLits;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   122
    INT _numILCs;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   123
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   124
    if (!( __isSmallInteger( textSize ) && ( _textSize = __intVal( textSize ), (_textSize >= 0) && (_textSize <= UINT32_MAX) ) ) ) {
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   125
        failureReason = @symbol(BadArg2);
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   126
        goto done;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   127
    }
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   128
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   129
    if (!( __isSmallInteger( numLits ) && ( _numLits = __intVal( numLits ), (_numLits >= 0) && (_numLits <= UINT16_MAX) ) ) ) {       
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   130
        failureReason = @symbol(BadArg3);
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   131
        goto done;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   132
    }
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   133
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   134
    if (!( __isSmallInteger( numILCs ) && ( _numILCs = __intVal( numILCs ), (_numILCs >= 0) && (_numILCs <= UINT16_MAX) ) ) ) {       
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   135
        failureReason = @symbol(BadArg4);
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   136
        goto done;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   137
    }
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   138
    code_object = stxCompiledCodeObjectForCompiledCode(compiledCode);
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   139
    if (code_object != NULL) {
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   140
        instance = nil;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   141
        failureReason = @symbol(BadArg1);
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   142
    } else {
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   143
        code_object = stxCompiledCodeObjectAlloc(compiledCode, _textSize, _numLits, _numILCs);
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   144
        __externalAddressVal(instance) = code_object;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   145
    }
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   146
    done:;
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   147
%}.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   148
    failureReason == #BadArg1 ifTrue:[ 
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   149
        self error: 'Bad Argument "compiledCode": not a compiled code or already associated'.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   150
        ^ nil
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   151
    ].
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   152
    failureReason == #BadArg2 ifTrue:[ 
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   153
        self error: 'Bad Argument "textSize": not a SmallInteger or out of range'.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   154
        ^ nil
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   155
    ].
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   156
    failureReason == #BadArg2 ifTrue:[ 
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   157
        self error: 'Bad Argument "numLits": not a SmallInteger or out of range'.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   158
        ^ nil
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   159
    ].
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   160
    failureReason == #BadArg2 ifTrue:[ 
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   161
        self error: 'Bad Argument "numILCs": not a SmallInteger or out of range'.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   162
        ^ nil
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   163
    ].
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   164
    instance setCompiledCode: compiledCode.
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   165
    ^ instance
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   166
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   167
    "Created: / 11-01-2016 / 16:42:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   168
    "Modified: / 11-01-2016 / 21:17:52 / 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
   169
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
!CompiledCodeObject methodsFor:'accessing'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   173
compiledCode
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    "Return method or block associated with this code object."
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   175
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   176
    | compiledCodeFromObject |
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   177
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   178
    compiledCodeFromObject := compiledCode.
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
%{
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   180
    if (__ExecutableCodeInstPtr(__INST(compiledCode))->ex_code != NULL) {
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   181
        if ( (INT)(__ExecutableCodeInstPtr(__INST(compiledCode))->ex_flags) & __MASKSMALLINT(F_DYNAMIC)  ) {
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   182
            stx_compiled_code_object code_object = (stx_compiled_code_object)(__externalAddressVal(self));
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   183
            if (code_object != NULL) {
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   184
                compiledCodeFromObject = stxCompiledCodeObjectGetCompiledCode(code_object);
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   185
            }
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   186
        }
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
    }
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
%}.
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   189
    self assert: compiledCode == compiledCodeFromObject
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   190
         description: 'compiled code mismatch'.
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   191
    ^ compiledCode.
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   193
    "Created: / 11-01-2016 / 09:31: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
   194
!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   196
sectionNamed: aString
12
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   197
    ^ self sectionNamed: aString ifAbsent:[ self error: 'No section named "', aString , '"' ]
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   198
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   199
    "Created: / 19-01-2016 / 21:28:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   200
    "Modified: / 24-01-2016 / 20:51:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   201
!
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   202
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   203
sectionNamed: aString ifAbsent: aBlock
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   204
    ^ self sections detect:[:section | section name = aString ] ifNone: aBlock
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   205
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   206
    "Created: / 24-01-2016 / 20:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   207
!
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   208
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
sections
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    | numSections |
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
    numSections := self numSections.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
    (sections isNil or:[ sections size ~= numSections ]) ifTrue:[ 
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
        sections := (1 to: numSections) collect:[ :i | self getSection: i ].
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
    ].
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
    ^ sections
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    "Created: / 07-12-2015 / 17:09:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   219
!
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   220
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   221
text
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   222
    "Return text (code) section"
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   223
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   224
    ^ self sections detect:[:section | section isTextSection ] ifNone:[ nil ].
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   225
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   226
    "Created: / 11-01-2016 / 21:14:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   227
! !
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   228
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   229
!CompiledCodeObject methodsFor:'allocation'!
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   230
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   231
allocateDataSection: dataSize named: dataName
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   232
    "Alocates new data section for the receiver."
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   233
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   234
    | failureReason |
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   235
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   236
    failureReason := nil.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   237
%{    
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   238
    stx_compiled_code_object code_object;
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   239
    INT _dataSize;
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   240
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   241
    if (!( __isSmallInteger( dataSize ) && ( _dataSize = __intVal( dataSize ), (_dataSize >= 0) && (_dataSize <= UINT32_MAX) ) ) ) {
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   242
        failureReason = @symbol(BadArg1);
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   243
        goto done;
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   244
    }
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   245
    if (! (__isString( dataName ))) {
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   246
        failureReason = @symbol(BadArg2);
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   247
        goto done;    
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   248
    }
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   249
    code_object = (stx_compiled_code_object)(__externalAddressVal(self));
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   250
    if (code_object == NULL) {        
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   251
        failureReason = @symbol(BadSelf);
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   252
    } else {
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   253
        stxCompiledCodeObjectAllocDataSection(code_object, _dataSize, __stringVal( dataName ));
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   254
        RETURN ( self );
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   255
    }
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   256
    done:;
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   257
%}.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   258
    self primitiveFailed: failureReason
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   259
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   260
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   261
!
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   262
9
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   263
allocateTextSection: textSize
8
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   264
    "Alocates new text section for the receiver. Throw an error if there's
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   265
     already a text section allocated for this object."
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   266
9
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   267
    | failureReason |
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   268
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   269
    failureReason := nil.
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   270
%{    
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   271
    stx_compiled_code_object code_object;
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   272
    INT _textSize;
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   273
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   274
    if (!( __isSmallInteger( textSize ) && ( _textSize = __intVal( textSize ), (_textSize >= 0) && (_textSize <= UINT32_MAX) ) ) ) {
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   275
        failureReason = @symbol(BadArg1);
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   276
        goto done;
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   277
    }
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   278
    code_object = (stx_compiled_code_object)(__externalAddressVal(self));
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   279
    if (code_object == NULL) {        
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   280
        failureReason = @symbol(BadSelf);
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   281
    } else {
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   282
        /* Check whether a text section has been allocated already */
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   283
        uint32_t nSections = stxCompiledCodeObjectGetSectionCount(code_object);
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   284
        uint32_t i;
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   285
        for (i = 0; i < nSections; i++) {
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   286
            stx_compiled_code_object_section code_section;
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   287
            code_section = stxCompiledCodeObjectGetSection ( code_object , i);
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   288
            if (code_section->section_format == SectionFormatText) {
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   289
            	failureReason = @symbol(TextAlreadyAllocayed);
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   290
            	goto done;
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   291
            }            
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   292
        }
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   293
        stxCompiledCodeObjectAllocTextSection(code_object, _textSize, CODE_OBJECT_SECTION_TEXT_NAME);
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   294
        RETURN ( self );
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   295
    }
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   296
    done:;
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   297
%}.
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   298
    self primitiveFailed: failureReason
40f9438e9de3 Updated after rename of section type to section format. Implemented section allocation routines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   299
8
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   300
b6b52d803b4c Added support for creating a new code object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   301
    "Created: / 11-01-2016 / 20:18:48 / 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
   302
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
5
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   304
!CompiledCodeObject methodsFor:'initialization'!
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   305
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   306
setCompiledCode: aCompiledCode
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   307
    compiledCode := aCompiledCode
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   308
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   309
    "Created: / 11-01-2016 / 09:50:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   310
! !
7b9132bf8295 Added support for "special cells section"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   311
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
!CompiledCodeObject methodsFor:'inspecting'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
inspector2TabText
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
    <inspector2Tab>   
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
    self sections do:[:section | 
19
51a3540a2a10 C1: Added C1Compiler #prepare/#finish
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   318
        section format == SectionFormatText ifTrue:[ 
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
            | tab |
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
            tab := section inspector2TabAssembly.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
            tab notNil ifTrue:[
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
                tab label: '.text'.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
                ^ tab.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
            ].                    
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
        ].
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    ].
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
    ^ nil
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
    "Created: / 11-12-2015 / 12:04:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
19
51a3540a2a10 C1: Added C1Compiler #prepare/#finish
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   331
    "Modified: / 21-04-2016 / 15:39:53 / 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
   332
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
!CompiledCodeObject methodsFor:'private'!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
getSection: index
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   337
    | section name size format |
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   338
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   339
    section := CompiledCodeObjectSection basicNew.
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
%{
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
    if (__isSmallInteger(index)) {
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
        stx_compiled_code_object code_object = (stx_compiled_code_object)(__externalAddressVal(self));
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
        stx_compiled_code_object_section code_section;
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
        code_section = stxCompiledCodeObjectGetSection ( code_object , __intVal( index ) - 1 );
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
        if (code_section) {
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   347
            __externalAddressVal(section) = (OBJ)code_section->section_addr;
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   348
            size = __MKSMALLINT ( code_section->section_size );                     
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   349
            format = __MKSMALLINT ( code_section->section_format );
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
            name = __MKSTRING ( code_section->section_name );
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
        }
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
    }
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
%}.
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   354
    (name notNil and:[ size notNil and:[ format notNil]]) ifTrue:[ 
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   355
        section setObject: self name: name size: size format: format.
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   356
        ^ section
2
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    ].
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
    self primitiveFailed.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    "Created: / 07-12-2015 / 17:15:35 / 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
   361
    "Modified: / 11-12-2015 / 10:06:26 / 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
   362
!
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
numSections
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    "Return the number of sections of this code object"
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
%{
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
    stx_compiled_code_object code_object = (stx_compiled_code_object)(__externalAddressVal(self));
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
    RETURN ( __MKSMALLINT( stxCompiledCodeObjectGetSectionCount ( code_object ) ) );
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
%}.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
    self primitiveFailed.
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
    "Created: / 07-12-2015 / 16:36:29 / 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
   374
! !
88445baa732f Introduced a CompiledCodeObject - an interface to VM's macine code management.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
12
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   376
!CompiledCodeObject methodsFor:'queries'!
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   377
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   378
hasSectionNamed: aString
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   379
    self sectionNamed: aString ifAbsent: [ ^ false ].
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   380
    ^ true
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   381
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   382
    "Created: / 24-01-2016 / 20:53:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   383
! !
6e775bad5027 More tests for CompiledCodeObject and ObjectFileLoader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   384
10
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   385
!CompiledCodeObject class methodsFor:'documentation'!
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   386
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   387
version_HG
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   388
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   389
    ^ '$Changeset: <not expanded> $'
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   390
! !
588414eaacff Added CodeObjectSection>>size. Polished tests a bit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   391