ProtoObject.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 24364 3efffac523e4
child 25182 48374d430ea9
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23415
45a9485a7d59 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23194
diff changeset
     1
"{ Encoding: utf8 }"
45a9485a7d59 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23194
diff changeset
     2
8728
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
     3
"
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
     4
 COPYRIGHT (c) 2004 by eXept Software AG
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
     5
              All Rights Reserved
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
     6
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
     7
 This software is furnished under a license and may be used
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
     8
 only in accordance with the terms of that license and with the
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    10
 be provided or otherwise made available to, or used by, any
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    11
 other person.  No title to or ownership of the software is
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    12
 hereby transferred.
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    13
"
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic' }"
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
18351
dc6c93a03b6d class: ProtoObject
Claus Gittinger <cg@exept.de>
parents: 16158
diff changeset
    16
"{ NameSpace: Smalltalk }"
dc6c93a03b6d class: ProtoObject
Claus Gittinger <cg@exept.de>
parents: 16158
diff changeset
    17
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
nil subclass:#ProtoObject
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:''
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
6912
d2e78827a065 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6911
diff changeset
    22
	category:'Kernel-Objects'
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!ProtoObject class methodsFor:'documentation'!
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
8728
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    27
copyright
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    28
"
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    29
 COPYRIGHT (c) 2004 by eXept Software AG
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    30
              All Rights Reserved
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    31
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    32
 This software is furnished under a license and may be used
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    33
 only in accordance with the terms of that license and with the
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    35
 be provided or otherwise made available to, or used by, any
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    36
 other person.  No title to or ownership of the software is
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    37
 hereby transferred.
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    38
"
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    39
!
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8500
diff changeset
    40
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    a minimum object without much protocol;
7659
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
    44
    Provides the minimum required to prevent inspectors from crashing,
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
    45
    and debuggers from blocking.
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
    46
    (i.e. instead of inheriting from nil, better inherit from this).
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
    47
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    Named after a similar class found in Dolphin-Smalltalk.
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    [author:]
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
        Claus Gittinger (not much authoring, though)
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
"
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
! !
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
21076
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    55
!ProtoObject class methodsFor:'helpers'!
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    56
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    57
shallowCopyOf:anObject
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    58
    "return a copy of anObject with shared subobjects (a shallow copy)
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    59
     i.e. the copy shares referenced instvars with its original."
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    60
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    61
%{  /* NOCONTEXT */
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    62
    int ninsts, spc, sz;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    63
    OBJ theCopy;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    64
    OBJ cls = __qClass(anObject);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    65
    int flags = __intVal(__ClassInstPtr(cls)->c_flags);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    66
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    67
    /*
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    68
     * bail out for special objects ..
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    69
     */
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    70
    if (((flags & ~ARRAYMASK) == 0)
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    71
     && ((flags & ARRAYMASK) != WKPOINTERARRAY)) {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    72
        sz = __qSize(anObject);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    73
        __PROTECT__(anObject);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    74
        __qNew(theCopy, sz);    /* OBJECT ALLOCATION */
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    75
        __UNPROTECT__(anObject);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    76
        if (theCopy) {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    77
            cls = __qClass(anObject);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    78
            spc = __qSpace(theCopy);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    79
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    80
            theCopy->o_class = cls; __STORE_SPC(theCopy, cls, spc);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    81
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    82
            sz = sz - OHDR_SIZE;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    83
            if (sz) {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    84
                char *src, *dst;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    85
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    86
                src = (char *)(__InstPtr(anObject)->i_instvars);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    87
                dst = (char *)(__InstPtr(theCopy)->i_instvars);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    88
#ifdef bcopy4
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    89
                {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    90
                    /* care for odd-number of longs */
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    91
                    int nW = sz >> 2;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    92
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    93
                    if (sz & 3) {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    94
                        nW++;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    95
                    }
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    96
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    97
                    bcopy4(src, dst, nW);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    98
                }
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
    99
#else
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   100
                bcopy(src, dst, sz);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   101
#endif
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   102
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   103
                flags &= ARRAYMASK;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   104
                if (flags == POINTERARRAY) {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   105
                    ninsts = __BYTES2OBJS__(sz);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   106
                } else {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   107
                    ninsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   108
                }
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   109
                if (ninsts) {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   110
                    do {
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   111
                        OBJ el;
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   112
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   113
                        el = __InstPtr(theCopy)->i_instvars[ninsts-1];
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   114
                        __STORE_SPC(theCopy, el, spc);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   115
                    } while (--ninsts);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   116
                }
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   117
            }
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   118
            RETURN (theCopy);
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   119
        }
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   120
    }
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   121
%}.
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   122
    "/ fallBack for special objects & memoryAllocation failure case
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   123
21079
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   124
    ^ self error:'ProtoObject>>#shallowCopyOf: failed'
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   125
! !
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   126
21085
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   127
!ProtoObject methodsFor:'error handling'!
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   128
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   129
doesNotUnderstand:aMessage
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   130
    "this message is sent by the runtime system (VM) when
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   131
     a message is not understood by some object (i.e. there
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   132
     is no method for that selector). The original message has
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   133
     been packed into aMessage (i.e. the receiver, selector and
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   134
     any arguments) and the original receiver is then sent the
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   135
     #doesNotUnderstand: message.
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   136
     Here, we raise another signal which usually enters the debugger.
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   137
     You can of course redefine #doesNotUnderstand: in your classes
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   138
     to implement message delegation, 
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   139
     or handle the MessageNotUnderstood exception gracefully."
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   140
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   141
    <context: #return>
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   142
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   143
    ^ MessageNotUnderstood raiseRequestWith:aMessage
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   144
! !
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   145
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   146
!ProtoObject methodsFor:'inspecting'!
21079
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   147
22385
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   148
basicInspect
21079
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   149
    "this method is required to allow inspection of the object"
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   150
22385
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   151
    ^ (Object compiledMethodAt:#basicInspect)
21079
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   152
        valueWithReceiver:self
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   153
        arguments:nil
22385
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   154
        selector:#basicInspect
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   155
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   156
    "Created: / 28-11-2017 / 19:23:47 / stefan"
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   157
!
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   158
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   159
inspect
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   160
    "{ Pragma: +optSpace }"
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   161
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   162
    "launch an inspector on the receiver.
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   163
     this method (or better: inspectorClass) can be redefined in subclasses
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   164
     to start special inspectors."
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   165
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   166
    |cls|
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   167
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   168
    cls := self inspectorClass.
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   169
    cls isNil ifTrue:[
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   170
        self basicInspect.
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   171
        ^ self.
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   172
    ].
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   173
    cls openOn:self
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   174
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   175
    "
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   176
     ProtoObject new inspect
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   177
    "
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   178
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   179
    "Modified: / 29-11-2017 / 10:39:38 / stefan"
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   180
!
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   181
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   182
inspectorClass
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   183
    Inspector ~~ MiniInspector ifTrue:[
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   184
        |cls|
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   185
23415
45a9485a7d59 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23194
diff changeset
   186
        cls := #'Tools::Inspector2' asClassIfAbsent:nil.
22385
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   187
        cls notNil ifTrue:[
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   188
            ^ cls.
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   189
        ].
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   190
    ].
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   191
    Inspector notNil ifTrue:[
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   192
        ^ Inspector.
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   193
    ].
23415
45a9485a7d59 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23194
diff changeset
   194
    ^ #'InspectorView' asClassIfAbsent:nil.
22385
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   195
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   196
    "Created: / 29-11-2017 / 10:20:09 / stefan"
23415
45a9485a7d59 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23194
diff changeset
   197
    "Modified: / 10-10-2018 / 00:43:48 / Claus Gittinger"
21079
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   198
!
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   199
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   200
instVarAt:index
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   201
    "this method is required to allow inspection of the object"
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   202
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   203
    ^ (Object compiledMethodAt:#instVarAt:)
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   204
        valueWithReceiver:self
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   205
        arguments:{index}
d83ede99b688 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21078
diff changeset
   206
        selector:#instVarAt:
21095
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   207
!
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   208
21117
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   209
isKindOf:aBehavior
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   210
    "this method is required Behavior>>#allSubInstancesDo:"
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   211
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   212
    aBehavior == Object ifTrue:[^ true].
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   213
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   214
    ^ (Object compiledMethodAt:#isKindOf:)
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   215
        valueWithReceiver:self
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   216
        arguments:{aBehavior}
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   217
        selector:#isKindOf:
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   218
!
43e651d0a0a3 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21113
diff changeset
   219
21113
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   220
perform:aSelector
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   221
    "this method is required to allow inspection of the object"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   222
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   223
    ^ self perform:aSelector withArguments:#().
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   224
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   225
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   226
perform:aSelector with:arg1 
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   227
    "this method is required to allow inspection of the object"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   228
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   229
    ^ self perform:aSelector withArguments:{arg1}.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   230
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   231
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   232
perform:aSelector with:arg1 with:arg2
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   233
    "this method is required to allow inspection of the object"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   234
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   235
    ^ self perform:aSelector withArguments:{arg1. arg2}.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   236
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   237
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   238
perform:aSelector with:arg1 with:arg2 with:arg3
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   239
    "this method is required to allow inspection of the object"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   240
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   241
    ^ self perform:aSelector withArguments:{arg1. arg2. arg3}.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   242
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   243
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   244
perform:aSelector with:arg1 with:arg2 with:arg3 with:arg4
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   245
    "this method is required to allow inspection of the object"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   246
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   247
    ^ self perform:aSelector withArguments:{arg1. arg2. arg3. arg4}.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   248
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   249
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   250
perform:aSelector with:arg1 with:arg2 with:arg3 with:arg4 with:arg5
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   251
    "this method is required to allow inspection of the object"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   252
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   253
    ^ self perform:aSelector withArguments:{arg1. arg2. arg3. arg4. arg5}.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   254
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   255
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   256
perform:aSelector with:arg1 with:arg2 with:arg3 with:arg4 with:arg5 with:arg6
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   257
    "this method is required to allow inspection of the object"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   258
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   259
    ^ self perform:aSelector withArguments:{arg1. arg2. arg3. arg4. arg5. arg6}.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   260
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   261
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   262
perform:aSelector withArguments:argArray
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   263
    "send the message aSelector with all args taken from argArray
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   264
     to the receiver.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   265
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   266
     1-to-1 Copy from the same method in Object!!"
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   267
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   268
    |numberOfArgs a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15|
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   269
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   270
%{
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   271
#ifdef __SCHTEAM__
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   272
    return context.PERFORM_WITH_ARGUMENTS(self, aSelector, argArray);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   273
#else
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   274
    REGISTER OBJ *argP;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   275
    int nargs;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   276
    OBJ l;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   277
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   278
    if (__isArrayLike(argArray)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   279
        nargs = __arraySize(argArray);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   280
        argP = __arrayVal(argArray);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   281
    } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   282
        if (__isNonNilObject(argArray)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   283
            static struct inlineCache ilcSize = __ILC0(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   284
            int i;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   285
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   286
            numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   287
            if (!__isSmallInteger(numberOfArgs))
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   288
                goto bad;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   289
            nargs = __intVal(numberOfArgs);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   290
            argP = (OBJ *)(&a1);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   291
            for (i=1; i <= nargs; i++) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   292
                *argP++ = __AT_(argArray, __mkSmallInteger(i));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   293
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   294
            argP = (OBJ *)(&a1);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   295
        } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   296
            nargs = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   297
        }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   298
    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   299
    switch (nargs) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   300
        case 0:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   301
            if (InterruptPending == nil) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   302
                static OBJ last0_0 = nil; static struct inlineCache ilc0_0 = __ILCPERF0(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   303
                static OBJ last0_1 = nil; static struct inlineCache ilc0_1 = __ILCPERF0(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   304
                static OBJ last0_2 = nil; static struct inlineCache ilc0_2 = __ILCPERF0(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   305
                static OBJ last0_3 = nil; static struct inlineCache ilc0_3 = __ILCPERF0(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   306
                static int flip0 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   307
                struct inlineCache *pIlc;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   308
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   309
                if (aSelector == last0_0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   310
                    pIlc = &ilc0_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   311
                } else if (aSelector == last0_1) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   312
                    pIlc = &ilc0_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   313
                } else if (aSelector == last0_2) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   314
                    pIlc = &ilc0_2;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   315
                } else if (aSelector == last0_3) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   316
                    pIlc = &ilc0_3;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   317
                } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   318
                    if (flip0 == 0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   319
                        pIlc = &ilc0_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   320
                        flip0 = 1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   321
                        last0_0 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   322
                    } else if (flip0 == 1) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   323
                        pIlc = &ilc0_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   324
                        flip0 = 2;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   325
                        last0_1 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   326
                    } else if (flip0 == 2) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   327
                        pIlc = &ilc0_2;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   328
                        flip0 = 3;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   329
                        last0_2 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   330
                    } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   331
                        pIlc = &ilc0_3;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   332
                        flip0 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   333
                        last0_3 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   334
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   335
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   336
                    pIlc->ilc_func = __SEND0ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   337
                    if (pIlc->ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   338
                        __flushPolyCache(pIlc->ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   339
                        pIlc->ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   340
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   341
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   342
                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   343
            } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   344
                static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   345
                RETURN (_SEND0(self, aSelector, nil, &ilc0));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   346
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   347
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   348
        case 1:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   349
            if (InterruptPending == nil) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   350
                static OBJ last1_0 = nil; static struct inlineCache ilc1_0 = __ILCPERF1(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   351
                static OBJ last1_1 = nil; static struct inlineCache ilc1_1 = __ILCPERF1(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   352
                static OBJ last1_2 = nil; static struct inlineCache ilc1_2 = __ILCPERF1(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   353
                static OBJ last1_3 = nil; static struct inlineCache ilc1_3 = __ILCPERF1(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   354
                static int flip1 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   355
                struct inlineCache *pIlc;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   356
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   357
                if (aSelector == last1_0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   358
                    pIlc = &ilc1_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   359
                } else if (aSelector == last1_1) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   360
                    pIlc = &ilc1_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   361
                } else if (aSelector == last1_2) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   362
                    pIlc = &ilc1_2;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   363
                } else if (aSelector == last1_3) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   364
                    pIlc = &ilc1_3;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   365
                } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   366
                    if (flip1 == 0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   367
                        pIlc = &ilc1_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   368
                        flip1 = 1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   369
                        last1_0 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   370
                    } else if (flip1 == 1) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   371
                        pIlc = &ilc1_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   372
                        flip1 = 2;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   373
                        last1_1 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   374
                    } else if (flip1 == 2) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   375
                        pIlc = &ilc1_2;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   376
                        flip1 = 3;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   377
                        last1_2 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   378
                    } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   379
                        pIlc = &ilc1_3;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   380
                        flip1 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   381
                        last1_3 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   382
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   383
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   384
                    pIlc->ilc_func = __SEND1ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   385
                    if (pIlc->ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   386
                        __flushPolyCache(pIlc->ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   387
                        pIlc->ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   388
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   389
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   390
                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   391
            } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   392
                static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   393
                RETURN (_SEND1(self, aSelector, nil, &ilc1, argP[0]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   394
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   395
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   396
        case 2:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   397
            if (InterruptPending == nil) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   398
                static OBJ last2_0 = nil; static struct inlineCache ilc2_0 = __ILCPERF2(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   399
                static OBJ last2_1 = nil; static struct inlineCache ilc2_1 = __ILCPERF2(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   400
                static int flip2 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   401
                struct inlineCache *pIlc;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   402
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   403
                if (aSelector == last2_0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   404
                    pIlc = &ilc2_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   405
                } else if (aSelector == last2_1) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   406
                    pIlc = &ilc2_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   407
                } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   408
                    if (flip2 == 0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   409
                        pIlc = &ilc2_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   410
                        flip2 = 1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   411
                        last2_0 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   412
                    } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   413
                        pIlc = &ilc2_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   414
                        flip2 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   415
                        last2_1 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   416
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   417
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   418
                    pIlc->ilc_func = __SEND2ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   419
                    if (pIlc->ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   420
                        __flushPolyCache(pIlc->ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   421
                        pIlc->ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   422
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   423
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   424
                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   425
            } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   426
                static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   427
                RETURN (_SEND2(self, aSelector, nil, &ilc2, argP[0], argP[1]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   428
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   429
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   430
        case 3:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   431
            if (InterruptPending == nil) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   432
                static OBJ last3_0 = nil; static struct inlineCache ilc3_0 = __ILCPERF3(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   433
                static OBJ last3_1 = nil; static struct inlineCache ilc3_1 = __ILCPERF3(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   434
                static int flip3 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   435
                struct inlineCache *pIlc;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   436
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   437
                if (aSelector == last3_0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   438
                    pIlc = &ilc3_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   439
                } else if (aSelector == last3_1) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   440
                    pIlc = &ilc3_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   441
                } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   442
                    if (flip3 == 0) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   443
                        pIlc = &ilc3_0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   444
                        flip3 = 1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   445
                        last3_0 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   446
                    } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   447
                        pIlc = &ilc3_1;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   448
                        flip3 = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   449
                        last3_1 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   450
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   451
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   452
                    pIlc->ilc_func = __SEND3ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   453
                    if (pIlc->ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   454
                        __flushPolyCache(pIlc->ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   455
                        pIlc->ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   456
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   457
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   458
                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1], argP[2]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   459
            } else {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   460
                static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   461
                RETURN (_SEND3(self, aSelector, nil, &ilc3, argP[0], argP[1], argP[2]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   462
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   463
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   464
        case 4:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   465
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   466
                static OBJ last4 = nil; static struct inlineCache ilc4 = __ILCPERF4(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   467
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   468
                if ((InterruptPending != nil) || (aSelector != last4)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   469
                    ilc4.ilc_func = __SEND4ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   470
                    if (ilc4.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   471
                        __flushPolyCache(ilc4.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   472
                        ilc4.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   473
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   474
                    last4 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   475
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   476
                RETURN ( (*ilc4.ilc_func)(self, aSelector, nil, &ilc4,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   477
                                                argP[0], argP[1], argP[2], argP[3]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   478
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   479
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   480
        case 5:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   481
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   482
                static OBJ last5 = nil; static struct inlineCache ilc5 = __ILCPERF5(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   483
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   484
                if ((InterruptPending != nil) || (aSelector != last5)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   485
                    ilc5.ilc_func = __SEND5ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   486
                    if (ilc5.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   487
                        __flushPolyCache(ilc5.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   488
                        ilc5.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   489
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   490
                    last5 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   491
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   492
                RETURN ( (*ilc5.ilc_func)(self, aSelector, nil, &ilc5,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   493
                                                argP[0], argP[1], argP[2], argP[3], argP[4]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   494
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   495
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   496
        case 6:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   497
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   498
                static OBJ last6 = nil; static struct inlineCache ilc6 = __ILCPERF6(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   499
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   500
                if ((InterruptPending != nil) || (aSelector != last6)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   501
                    ilc6.ilc_func = __SEND6ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   502
                    if (ilc6.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   503
                        __flushPolyCache(ilc6.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   504
                        ilc6.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   505
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   506
                    last6 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   507
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   508
                RETURN ( (*ilc6.ilc_func)(self, aSelector, nil, &ilc6,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   509
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   510
                                                argP[5]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   511
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   512
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   513
        case 7:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   514
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   515
                static OBJ last7 = nil; static struct inlineCache ilc7 = __ILCPERF7(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   516
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   517
                if ((InterruptPending != nil) || (aSelector != last7)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   518
                    ilc7.ilc_func = __SEND7ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   519
                    if (ilc7.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   520
                        __flushPolyCache(ilc7.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   521
                        ilc7.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   522
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   523
                    last7 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   524
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   525
                RETURN ( (*ilc7.ilc_func)(self, aSelector, nil, &ilc7,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   526
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   527
                                                argP[5], argP[6]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   528
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   529
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   530
        case 8:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   531
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   532
                static OBJ last8 = nil; static struct inlineCache ilc8 = __ILCPERF8(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   533
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   534
                if ((InterruptPending != nil) || (aSelector != last8)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   535
                    ilc8.ilc_func = __SEND8ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   536
                    if (ilc8.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   537
                        __flushPolyCache(ilc8.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   538
                        ilc8.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   539
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   540
                    last8 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   541
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   542
                RETURN ( (*ilc8.ilc_func)(self, aSelector, nil, &ilc8,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   543
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   544
                                                argP[5], argP[6], argP[7]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   545
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   546
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   547
        case 9:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   548
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   549
                static OBJ last9 = nil; static struct inlineCache ilc9 = __ILCPERF9(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   550
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   551
                if ((InterruptPending != nil) || (aSelector != last9)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   552
                    ilc9.ilc_func = __SEND9ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   553
                    if (ilc9.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   554
                        __flushPolyCache(ilc9.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   555
                        ilc9.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   556
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   557
                    last9 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   558
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   559
                RETURN ( (*ilc9.ilc_func)(self, aSelector, nil, &ilc9,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   560
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   561
                                                argP[5], argP[6], argP[7], argP[8]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   562
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   563
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   564
        case 10:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   565
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   566
                static OBJ last10 = nil; static struct inlineCache ilc10 = __ILCPERF10(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   567
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   568
                if ((InterruptPending != nil) || (aSelector != last10)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   569
                    ilc10.ilc_func = __SEND10ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   570
                    if (ilc10.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   571
                        __flushPolyCache(ilc10.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   572
                        ilc10.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   573
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   574
                    last10 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   575
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   576
                RETURN ( (*ilc10.ilc_func)(self, aSelector, nil, &ilc10,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   577
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   578
                                                argP[5], argP[6], argP[7], argP[8], argP[9]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   579
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   580
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   581
        case 11:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   582
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   583
                static OBJ last11 = nil; static struct inlineCache ilc11 = __ILCPERF11(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   584
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   585
                if ((InterruptPending != nil) || (aSelector != last11)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   586
                    ilc11.ilc_func = __SEND11ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   587
                    if (ilc11.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   588
                        __flushPolyCache(ilc11.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   589
                        ilc11.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   590
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   591
                    last11 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   592
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   593
                RETURN ( (*ilc11.ilc_func)(self, aSelector, nil, &ilc11,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   594
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   595
                                                argP[5], argP[6], argP[7], argP[8], argP[9],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   596
                                                argP[10]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   597
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   598
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   599
        case 12:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   600
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   601
                static OBJ last12 = nil; static struct inlineCache ilc12 = __ILCPERF12(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   602
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   603
                if ((InterruptPending != nil) || (aSelector != last12)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   604
                    ilc12.ilc_func = __SEND12ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   605
                    if (ilc12.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   606
                        __flushPolyCache(ilc12.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   607
                        ilc12.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   608
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   609
                    last12 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   610
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   611
                RETURN ( (*ilc12.ilc_func)(self, aSelector, nil, &ilc12,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   612
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   613
                                                argP[5], argP[6], argP[7], argP[8], argP[9],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   614
                                                argP[10], argP[11]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   615
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   616
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   617
        case 13:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   618
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   619
                static OBJ last13 = nil; static struct inlineCache ilc13 = __ILCPERF13(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   620
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   621
                if ((InterruptPending != nil) || (aSelector != last13)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   622
                    ilc13.ilc_func = __SEND13ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   623
                    if (ilc13.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   624
                        __flushPolyCache(ilc13.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   625
                        ilc13.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   626
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   627
                    last13 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   628
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   629
                RETURN ( (*ilc13.ilc_func)(self, aSelector, nil, &ilc13,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   630
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   631
                                                argP[5], argP[6], argP[7], argP[8], argP[9],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   632
                                                argP[10], argP[11], argP[12]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   633
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   634
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   635
        case 14:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   636
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   637
                static OBJ last14 = nil; static struct inlineCache ilc14 = __ILCPERF14(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   638
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   639
                if ((InterruptPending != nil) || (aSelector != last14)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   640
                    ilc14.ilc_func = __SEND14ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   641
                    if (ilc14.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   642
                        __flushPolyCache(ilc14.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   643
                        ilc14.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   644
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   645
                    last14 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   646
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   647
                RETURN ( (*ilc14.ilc_func)(self, aSelector, nil, &ilc14,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   648
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   649
                                                argP[5], argP[6], argP[7], argP[8], argP[9],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   650
                                                argP[10], argP[11], argP[12], argP[13]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   651
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   652
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   653
        case 15:
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   654
            {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   655
                static OBJ last15 = nil; static struct inlineCache ilc15 = __ILCPERF15(@line);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   656
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   657
                if ((InterruptPending != nil) || (aSelector != last15)) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   658
                    ilc15.ilc_func = __SEND15ADDR__;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   659
                    if (ilc15.ilc_poly) {
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   660
                        __flushPolyCache(ilc15.ilc_poly);
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   661
                        ilc15.ilc_poly = 0;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   662
                    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   663
                    last15 = aSelector;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   664
                }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   665
                RETURN ( (*ilc15.ilc_func)(self, aSelector, nil, &ilc15,
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   666
                                                argP[0], argP[1], argP[2], argP[3], argP[4],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   667
                                                argP[5], argP[6], argP[7], argP[8], argP[9],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   668
                                                argP[10], argP[11], argP[12], argP[13],
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   669
                                                argP[14]));
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   670
            }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   671
    }
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   672
bad:;
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   673
#endif
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   674
%}.
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   675
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   676
    "/ arrive here, if bad number of arguments (too many)
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   677
    "/ ST/X (currently) only allows up to 15 method arguments
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   678
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   679
    ^ self primitiveFailed
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   680
!
b2e1c03c663b #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21095
diff changeset
   681
21095
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   682
referencesAny:anObject
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   683
    "this method is required to allow inspection of the object"
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   684
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   685
    ^ (Object compiledMethodAt:#referencesAny:)
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   686
        valueWithReceiver:self
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   687
        arguments:{anObject}
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   688
        selector:#referencesAny
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   689
!
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   690
22001
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   691
referencesInstanceOf:anObject
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   692
    "this method is required to allow inspection of the object"
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   693
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   694
    ^ false
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   695
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   696
    "Created: / 13-07-2017 / 12:12:45 / Maren"
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   697
!
546f216b8947 #FEATURE by Maren
matilk
parents: 21665
diff changeset
   698
21095
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   699
referencesObject:anObject
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   700
    "this method is required to allow inspection of the object"
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   701
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   702
    ^ (Object compiledMethodAt:#referencesObject:)
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   703
        valueWithReceiver:self
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   704
        arguments:{anObject}
395754cfc670 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21085
diff changeset
   705
        selector:#referencesObject
21076
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   706
! !
67699e10cae2 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 21075
diff changeset
   707
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   708
!ProtoObject methodsFor:'queries'!
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   709
22385
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   710
basicSize
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   711
    "this method is required to allow restore of the object"
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   712
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   713
    ^ (Object compiledMethodAt:#basicSize)
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   714
        valueWithReceiver:self
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   715
        arguments:nil
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   716
        selector:#basicSize
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   717
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   718
    "Created: / 28-11-2017 / 19:30:09 / stefan"
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   719
!
1c6129237329 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 22001
diff changeset
   720
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   721
class
19678
85ad5275e07c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18439
diff changeset
   722
    "return the receiver's class"
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   723
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   724
%{  /* NOCONTEXT */
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   725
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   726
    RETURN ( __Class(self) );
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   727
%}
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   728
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   729
"
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   730
*** WARNING
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   731
***
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
*** this method has been automatically created,
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
*** since all nil-subclasses should respond to some minimum required
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   734
*** protocol.
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   735
***
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   736
*** Inspection and/or debugging of instances may not be possible,
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
*** if you remove/change this method. 
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   738
"
19678
85ad5275e07c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18439
diff changeset
   739
85ad5275e07c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18439
diff changeset
   740
    "Modified (comment): / 30-04-2016 / 15:51:12 / cg"
10589
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   741
!
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   742
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   743
identityHash
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   744
    "return an Integer useful as a hash key for the receiver.
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   745
     This hash should return same values for the same object (i.e. use
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   746
     this to hash on identity of objects).
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   747
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   748
     We cannot use the Objects address (as other smalltalks do) since
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   749
     no object-table exists and the hashval must not change when objects
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   750
     are moved by the collector. Therefore we assign each object a unique
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   751
     Id in the object header itself as its hashed upon.
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   752
     (luckily we have 11 bits spare to do this - unluckily its only 11 bits).
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   753
     Time will show, if 11 bits are enough; if not, another entry in the
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   754
     object header will be needed, adding 4 bytes to every object. Alternatively,
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   755
     hashed-upon objects could add an instvar containing the hash value."
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   756
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   757
%{  /* NOCONTEXT */
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   758
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   759
    REGISTER unsigned INT hash;
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   760
    static unsigned nextHash = 0;
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   761
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   762
    if (__isNonNilObject(self)) {
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   763
        hash = __GET_HASH(self);
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   764
        if (hash == 0) {
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   765
            /* has no hash yet */
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   766
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   767
            if (++nextHash > __MAX_HASH__) {
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   768
                nextHash = 1;
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   769
            }
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   770
            hash = nextHash;
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   771
            __SET_HASH(self, hash);
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   772
        }
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   773
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   774
        /*
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   775
         * now, we got 11 bits for hashing;
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   776
         * make it as large as possible; since most hashers use the returned
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   777
         * key and take it modulo some prime number, this will allow for
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   778
         * better distribution (i.e. bigger empty spaces) in hashed collection.
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   779
         */
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   780
        hash = __MAKE_HASH__(hash);
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   781
        RETURN ( __mkSmallInteger(hash) );
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   782
    }
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   783
%}.
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   784
    ^ 0 "never reached, since redefined in UndefinedObject and SmallInteger"
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   785
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   786
    "Created: / 31-05-2007 / 23:18:40 / cg"
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   787
! !
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   788
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   789
!ProtoObject methodsFor:'testing'!
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   790
12571
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   791
ifNil:aBlock
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   792
    ^ self
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   793
!
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   794
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   795
ifNotNil:aBlockOrValue
22647
8d71f14e06fa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 22385
diff changeset
   796
    ^ aBlockOrValue valueWithOptionalArgument:self
21665
66cd03a17eb8 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 21117
diff changeset
   797
22647
8d71f14e06fa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 22385
diff changeset
   798
    "Modified: / 22-03-2018 / 11:39:11 / stefan"
12571
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   799
!
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   800
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   801
isBehavior
18351
dc6c93a03b6d class: ProtoObject
Claus Gittinger <cg@exept.de>
parents: 16158
diff changeset
   802
    "return true, if the receiver is describing another object's behavior.
9222
1dccfa01fb06 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
   803
     False is returned here - the method is only redefined in Behavior."
1dccfa01fb06 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
   804
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   805
    ^ false
7661
71d2cac1b959 some tests aded to avoid trouble in debugger
Claus Gittinger <cg@exept.de>
parents: 7659
diff changeset
   806
!
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   807
7661
71d2cac1b959 some tests aded to avoid trouble in debugger
Claus Gittinger <cg@exept.de>
parents: 7659
diff changeset
   808
isBlock
71d2cac1b959 some tests aded to avoid trouble in debugger
Claus Gittinger <cg@exept.de>
parents: 7659
diff changeset
   809
    ^ false
7659
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   810
!
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   811
21085
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   812
isBridgeProxy
23024
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   813
    "answer true, if I am a proxy object for a bridged remote object"
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   814
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   815
    "do not move this into the bridge-package;
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   816
     it is called by some others, to prevent remote messages from implements/respondsTo, etc.
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   817
     which are called from inspectors and debuggers"
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   818
     
21085
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   819
    ^ false
23024
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   820
83305ccbb6b0 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22647
diff changeset
   821
    "Modified (comment): / 25-05-2018 / 12:45:50 / Claus Gittinger"
21085
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   822
!
0da90045c648 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 21084
diff changeset
   823
7659
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   824
isException
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   825
    ^ false
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   826
!
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   827
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   828
isExceptionHandler
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   829
    ^ false
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   830
!
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   831
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   832
isJavaObject
23642
1ab778abeb7c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 23415
diff changeset
   833
    "return true if this is a JavaObject.
1ab778abeb7c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 23415
diff changeset
   834
     false is returned here - the method is only redefined in JavaObject."
1ab778abeb7c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 23415
diff changeset
   835
7659
4def16a2e6e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6912
diff changeset
   836
    ^ false
23642
1ab778abeb7c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 23415
diff changeset
   837
1ab778abeb7c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 23415
diff changeset
   838
    "Modified (comment): / 24-01-2019 / 12:48:30 / Claus Gittinger"
10589
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   839
!
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   840
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   841
isLazyValue
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   842
    ^ false
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   843
47f2edd1ffc6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9222
diff changeset
   844
    "Created: / 03-06-2007 / 14:02:12 / cg"
10591
d5122476748b changed #isLiteral
Claus Gittinger <cg@exept.de>
parents: 10589
diff changeset
   845
!
d5122476748b changed #isLiteral
Claus Gittinger <cg@exept.de>
parents: 10589
diff changeset
   846
d5122476748b changed #isLiteral
Claus Gittinger <cg@exept.de>
parents: 10589
diff changeset
   847
isLiteral
d5122476748b changed #isLiteral
Claus Gittinger <cg@exept.de>
parents: 10589
diff changeset
   848
    ^ false
d5122476748b changed #isLiteral
Claus Gittinger <cg@exept.de>
parents: 10589
diff changeset
   849
d5122476748b changed #isLiteral
Claus Gittinger <cg@exept.de>
parents: 10589
diff changeset
   850
    "Created: / 04-06-2007 / 17:19:10 / cg"
21075
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   851
!
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   852
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   853
isNil
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   854
    ^ false.
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   855
!
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   856
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   857
isProtoObject
d61cf84d605a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19678
diff changeset
   858
    ^ true
24364
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   859
!
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   860
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   861
isProxy
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   862
    "answer true, if I am a proxy for another (lazy loaded) object"
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   863
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   864
    "do not remove this;
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   865
     it is called by some others, to prevent blocking in inspectors and debuggers"
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   866
     
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   867
    ^ false
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   868
3efffac523e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23642
diff changeset
   869
    "Created: / 25-06-2019 / 17:29:01 / Claus Gittinger"
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   870
! !
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   871
23194
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   872
!ProtoObject methodsFor:'visiting'!
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   873
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   874
acceptVisitor:aVisitor with:aParameter
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   875
    "double-dispatch via visitObject:with: into a Visitor.
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   876
     Subclasses redefine this to pass their type in the message name (i.e. visitXXX:)"
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   877
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   878
    ^ aVisitor visitProtoObject:self with:aParameter
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   879
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   880
    "Created: / 04-07-2018 / 00:41:38 / Claus Gittinger"
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   881
! !
bc61e26c72d9 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23024
diff changeset
   882
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   883
!ProtoObject class methodsFor:'documentation'!
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   884
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   885
version
19678
85ad5275e07c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18439
diff changeset
   886
    ^ '$Header$'
12571
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   887
!
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   888
Claus Gittinger <cg@exept.de>
parents: 10591
diff changeset
   889
version_CVS
19678
85ad5275e07c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18439
diff changeset
   890
    ^ '$Header$'
6844
75e52e680723 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   891
! !
16158
93042fc9827e class: ProtoObject
Claus Gittinger <cg@exept.de>
parents: 12571
diff changeset
   892