--- a/CompiledCodeObject.st Wed Jun 15 23:46:29 2016 +0100
+++ b/CompiledCodeObject.st Thu Jun 16 16:56:52 2016 +0100
@@ -26,7 +26,7 @@
ExternalAddress subclass:#CompiledCodeObject
instanceVariableNames:'compiledCode sections'
classVariableNames:''
- poolDictionaries:''
+ poolDictionaries:'CompiledCodeObjectSectionFormat'
category:'System-Compiler-Interface'
!
@@ -193,6 +193,14 @@
"Created: / 11-01-2016 / 09:31:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+literals
+ "Return literals section"
+
+ ^ self sections detect:[:section | section format == SectionFormatOBJVector ] ifNone:[ nil ].
+
+ "Created: / 16-06-2016 / 12:08:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
sectionNamed: aString
^ self sectionNamed: aString ifAbsent:[ self error: 'No section named "', aString , '"' ]
@@ -221,9 +229,10 @@
text
"Return text (code) section"
- ^ self sections detect:[:section | section isTextSection ] ifNone:[ nil ].
+ ^ self sections detect:[:section | section format == SectionFormatText ] ifNone:[ nil ].
"Created: / 11-01-2016 / 21:14:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-06-2016 / 09:22:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CompiledCodeObject methodsFor:'allocation'!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CompiledCodeObjectExamples.st Thu Jun 16 16:56:52 2016 +0100
@@ -0,0 +1,183 @@
+"
+ Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+"
+"{ Package: 'jv:dragonfly' }"
+
+"{ NameSpace: Smalltalk }"
+
+TestCase subclass:#CompiledCodeObjectExamples
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'System-Compiler-Interface-Tests'
+!
+
+!CompiledCodeObjectExamples class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+"
+! !
+
+!CompiledCodeObjectExamples class methodsFor:'testing'!
+
+isTestSelector:aSelector
+ ^ (super isTestSelector:aSelector) or:[ aSelector startsWith: 'example' ]
+
+ "Created: / 16-06-2016 / 00:23:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CompiledCodeObjectExamples methodsFor:'examples'!
+
+example01
+ "Shows how to:
+ * allocate a machine code object,
+ * install some code and
+ * run it"
+
+ | method object machineCode |
+
+ "We need to create a method for which we allocate a code object.
+ Even though we may not install the method anywhere, we still need it
+ as the Method instance keeps the reference to the code object and
+ therefore prevents it from being garbage collected."
+ method := Method new.
+ method numberOfArgs: 0.
+ method numberOfVars: 0.
+ method stackSize: 0.
+
+ "Now allocate a code object for the method. We don't know the size of the code yet
+ (so we pass 0 as .text section size) and - in this example - we won't need any ILC
+ nor literal vector. Remember we can allocate the .text section later once we know
+ the size of the machine code."
+ object := CompiledCodeObject forCompiledCode: method text: 0 literals: 0 ilcs: 0.
+
+ "Generate some machine code:"
+ machineCode := #[184 11 0 0 0 195].
+ "This was easy, wasn't it? The above is
+ mov eax, 0xb
+ ret
+ i.e., a super-simple function that returns a SmallInteger value of 5.
+
+ Now we need to allocate a .text section and copy the machine code there:"
+ object allocateTextSection: machineCode size.
+ object text replaceFrom: 1 with: machineCode.
+
+ "Almost there. The final step is to update a code pointer of the method to
+ the machine code we just installed:"
+ method code: object text address.
+
+ "Let's execute it:"
+ self assert: 5 == (method valueWithReceiver:1 arguments:#()).
+
+ "Created: / 16-06-2016 / 00:23:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 16-06-2016 / 09:29:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+example02
+ "Shows how to access a constant object (literal) within a machine code.
+ As object may be moved around by a garbage collector, we cannot simply
+ take object's address and return it - it will soon become invalid.
+
+ So, to access a constant object from a machine code, we have to allocate
+ a special 'object vector' section and put the object there and access it
+ indirectly using object's index in the vector and section base address.
+ By marking the section as 'object vector' section, the garbage collector
+ knows it contains objects and whenever it moves an object referenced from
+ there, it updates the pointer in the section data. Note, that section
+ data never moves.
+ "
+
+ | literal method object asm machineCode |
+
+ "Create a constant object to return from machine code"
+ literal := 'Some cool literal' copy.
+
+ method := Method new.
+ method numberOfArgs: 0.
+ method numberOfVars: 0.
+ method stackSize: 0.
+
+ "Now allocate a code object for the method. We don't know the size of the code yet
+ (so we pass 0 as .text section size). We need to reference our `literal` object,
+ so allocate 'object vector' section with size 1 (we need only one object). Still
+ no ILCs."
+ object := CompiledCodeObject forCompiledCode: method text: 0 literals: 1 ilcs: 0.
+
+ "Store our literal object into the object vector section"
+ object literals at: 1 put: literal.
+
+ "Actually, generate the machine code. Do it with help of Igor Stasenko AsmJIT,
+ it iss easier to see it in symbolic instructions rather than machine code"
+ self skipIf: (OperatingSystem getCPUType ~~ #x86) description: 'AsmJIT works fine only for i386 assembly :-('.
+ self skipIf: (Smalltalk includesKey: #AJx86Assembler) not description: 'AsmJIT not available'.
+
+ asm := AJx86Assembler noStackFrame.
+ asm mov: (object literals address asUImm32 ptr) -> asm EAX.
+ asm ret.
+ machineCode := asm bytes.
+ "
+ To check the generated code, inspect
+ UDIS86 disassemble: machineCode
+ "
+
+ "Now we need to allocate a .text section and copy the machine code there:"
+ object allocateTextSection: machineCode size.
+ object text replaceFrom: 1 with: machineCode.
+
+ "Almost there. The final step is to update a code pointer of the method to
+ the machine code we just installed:"
+ method code: object text address.
+
+ "Let's execute it:"
+ self assert: literal == (method valueWithReceiver:1 arguments:#()).
+
+ "Created: / 16-06-2016 / 12:29:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-06-2016 / 17:22:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CompiledCodeObjectExamples class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/CompiledCodeObjectSection.st Wed Jun 15 23:46:29 2016 +0100
+++ b/CompiledCodeObjectSection.st Thu Jun 16 16:56:52 2016 +0100
@@ -166,11 +166,7 @@
if ( (_index < 0) || ( _index >= (_size / sizeof(OBJ)) ) ) {
failureReason = @symbol(BadArg1OutOfBounds);
goto error;
- }
- if ( ! __isExternalAddress(__INST(object)) ) {
- failureReason = @symbol(BadObject);
- goto error;
- }
+ }
OBJ *vector = (OBJ*)(__externalAddressVal(self));
vector[_index] = value;
stxCompiledCodeObjectOBJVectorModified(__externalAddressVal(__INST(object)));
--- a/CompiledCodeObjectTests.st Wed Jun 15 23:46:29 2016 +0100
+++ b/CompiledCodeObjectTests.st Thu Jun 16 16:56:52 2016 +0100
@@ -1,3 +1,24 @@
+"
+ Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+"
"{ Package: 'jv:dragonfly' }"
"{ NameSpace: Smalltalk }"
@@ -11,6 +32,31 @@
!CompiledCodeObjectTests class methodsFor:'documentation'!
+copyright
+"
+ Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+"
+!
+
documentation
"
documentation to be added.
--- a/Make.proto Wed Jun 15 23:46:29 2016 +0100
+++ b/Make.proto Thu Jun 16 16:56:52 2016 +0100
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libcomp
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libcomp
# if you need any additional defines for embedded C code,
@@ -121,10 +121,10 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)CompiledCodeObject.$(O) CompiledCodeObject.$(C) CompiledCodeObject.$(H): CompiledCodeObject.st $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CompiledCodeObjectSectionFormat.$(O) CompiledCodeObjectSectionFormat.$(C) CompiledCodeObjectSectionFormat.$(H): CompiledCodeObjectSectionFormat.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
$(OUTDIR)VMOffsets.$(O) VMOffsets.$(C) VMOffsets.$(H): VMOffsets.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
$(OUTDIR)jv_dragonfly.$(O) jv_dragonfly.$(C) jv_dragonfly.$(H): jv_dragonfly.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)CompiledCodeObject.$(O) CompiledCodeObject.$(C) CompiledCodeObject.$(H): CompiledCodeObject.st $(INCLUDE_TOP)/jv/dragonfly/CompiledCodeObjectSectionFormat.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CompiledCodeObjectSection.$(O) CompiledCodeObjectSection.$(C) CompiledCodeObjectSection.$(H): CompiledCodeObjectSection.st $(INCLUDE_TOP)/jv/dragonfly/CompiledCodeObjectSectionFormat.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
$(OUTDIR)VMData.$(O) VMData.$(C) VMData.$(H): VMData.st $(INCLUDE_TOP)/jv/dragonfly/VMOffsets.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Wed Jun 15 23:46:29 2016 +0100
+++ b/Make.spec Thu Jun 16 16:56:52 2016 +0100
@@ -51,10 +51,10 @@
STCWARNINGS=-warnNonStandard
COMMON_CLASSES= \
- CompiledCodeObject \
CompiledCodeObjectSectionFormat \
VMOffsets \
jv_dragonfly \
+ CompiledCodeObject \
CompiledCodeObjectSection \
VMData \
@@ -62,10 +62,10 @@
COMMON_OBJS= \
- $(OUTDIR_SLASH)CompiledCodeObject.$(O) \
$(OUTDIR_SLASH)CompiledCodeObjectSectionFormat.$(O) \
$(OUTDIR_SLASH)VMOffsets.$(O) \
$(OUTDIR_SLASH)jv_dragonfly.$(O) \
+ $(OUTDIR_SLASH)CompiledCodeObject.$(O) \
$(OUTDIR_SLASH)CompiledCodeObjectSection.$(O) \
$(OUTDIR_SLASH)VMData.$(O) \
$(OUTDIR_SLASH)extensions.$(O) \
--- a/ObjectFileLoaderTests.st Wed Jun 15 23:46:29 2016 +0100
+++ b/ObjectFileLoaderTests.st Thu Jun 16 16:56:52 2016 +0100
@@ -1,3 +1,24 @@
+"
+ Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+"
"{ Package: 'jv:dragonfly' }"
"{ NameSpace: Smalltalk }"
@@ -9,6 +30,32 @@
category:'System-Compiler-Tests'
!
+!ObjectFileLoaderTests class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+"
+! !
!ObjectFileLoaderTests methodsFor:'test - dlsym / GetProcAddress'!
--- a/abbrev.stc Wed Jun 15 23:46:29 2016 +0100
+++ b/abbrev.stc Thu Jun 16 16:56:52 2016 +0100
@@ -1,11 +1,12 @@
# automagically generated by the project definition
# this file is needed for stc to be able to compile modules independently.
# it provides information about a classes filename, category and especially namespace.
-CompiledCodeObject CompiledCodeObject jv:dragonfly 'System-Compiler-Interface' 0
+CompiledCodeObjectExamples CompiledCodeObjectExamples jv:dragonfly 'System-Compiler-Interface-Tests' 1
CompiledCodeObjectSectionFormat CompiledCodeObjectSectionFormat jv:dragonfly 'System-Compiler-Interface' 0
VMOffsets VMOffsets jv:dragonfly 'System-Compiler-Interface' 0
jv_dragonfly jv_dragonfly jv:dragonfly '* Projects & Packages *' 3
+CompiledCodeObject CompiledCodeObject jv:dragonfly 'System-Compiler-Interface' 0
CompiledCodeObjectSection CompiledCodeObjectSection jv:dragonfly 'System-Compiler-Interface' 0
+CompiledCodeObjectTests CompiledCodeObjectTests jv:dragonfly 'System-Compiler-Interface-Tests' 1
VMData VMData jv:dragonfly 'System-Compiler-Interface' 0
-CompiledCodeObjectTests CompiledCodeObjectTests jv:dragonfly 'System-Compiler-Interface-Tests' 1
ObjectFileLoaderTests ObjectFileLoaderTests jv:dragonfly 'System-Compiler-Tests' 1
--- a/asm/AJMem.st Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/AJMem.st Thu Jun 16 16:56:52 2016 +0100
@@ -367,7 +367,9 @@
isUpperBank
"see `AJBaseReg >> #isUpperBank` "
- ^ self base isUpperBank
+ ^ base notNil and:[ base isUpperBank ]
+
+ "Modified: / 16-06-2016 / 13:58:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
prohibitsRex
--- a/asm/AJStackAlignmentTests.st Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/AJStackAlignmentTests.st Thu Jun 16 16:56:52 2016 +0100
@@ -1,3 +1,29 @@
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+"
"{ Package: 'jv:dragonfly/asm' }"
"{ NameSpace: Smalltalk }"
@@ -9,6 +35,38 @@
category:'AsmJit-Tests'
!
+!AJStackAlignmentTests class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+"
+! !
+
!AJStackAlignmentTests methodsFor:'tests'!
testJumps
--- a/asm/AJx64AssemblerTests.st Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/AJx64AssemblerTests.st Thu Jun 16 16:56:52 2016 +0100
@@ -1,3 +1,29 @@
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+"
"{ Package: 'jv:dragonfly/asm' }"
"{ NameSpace: Smalltalk }"
@@ -9,6 +35,37 @@
category:'AsmJit-Tests'
!
+!AJx64AssemblerTests class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+"
+! !
!AJx64AssemblerTests class methodsFor:'as yet unclassified'!
--- a/asm/AJx86AssemblerTests.st Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/AJx86AssemblerTests.st Thu Jun 16 16:56:52 2016 +0100
@@ -1,3 +1,29 @@
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+"
"{ Package: 'jv:dragonfly/asm' }"
"{ NameSpace: Smalltalk }"
@@ -9,6 +35,38 @@
category:'AsmJit-Tests'
!
+!AJx86AssemblerTests class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+"
+! !
+
!AJx86AssemblerTests methodsFor:'running'!
setUp
--- a/asm/AJx86RegisterTests.st Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/AJx86RegisterTests.st Thu Jun 16 16:56:52 2016 +0100
@@ -1,3 +1,29 @@
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+"
"{ Package: 'jv:dragonfly/asm' }"
"{ NameSpace: Smalltalk }"
@@ -9,6 +35,38 @@
category:'AsmJit-Tests'
!
+!AJx86RegisterTests class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2012-2016 Igor Stasenko
+ Martin McClure
+ Damien Pollet
+ Camillo Bruni
+ Guido Chari
+ 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the 'Software'), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+"
+! !
+
!AJx86RegisterTests methodsFor:'as yet unclassified'!
testAsHighByte
--- a/asm/Make.proto Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/Make.proto Thu Jun 16 16:56:52 2016 +0100
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic
# if you need any additional defines for embedded C code,
--- a/asm/abbrev.stc Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/abbrev.stc Thu Jun 16 16:56:52 2016 +0100
@@ -29,20 +29,20 @@
AJCallCleanup AJCallCleanup jv:dragonfly/asm 'AsmJit-StackManagement' 0
AJImmediate AJImmediate jv:dragonfly/asm 'AsmJit-Operands' 0
AJMem AJMem jv:dragonfly/asm 'AsmJit-Operands' 0
-AJStackAlignmentTests AJStackAlignmentTests jv:dragonfly/asm 'AsmJit-Tests' 1
AJx64Instruction AJx64Instruction jv:dragonfly/asm 'AsmJit-x86-Instructions' 0
AJx86Assembler AJx86Assembler jv:dragonfly/asm 'AsmJit-x86' 0
-AJx86AssemblerTests AJx86AssemblerTests jv:dragonfly/asm 'AsmJit-Tests' 1
AJx86InstructionDescription AJx86InstructionDescription jv:dragonfly/asm 'AsmJit-x86-Instructions' 2
AJx86JumpInstruction AJx86JumpInstruction jv:dragonfly/asm 'AsmJit-x86-Instructions' 0
-AJx86RegisterTests AJx86RegisterTests jv:dragonfly/asm 'AsmJit-Tests' 1
AJMMRegister AJMMRegister jv:dragonfly/asm 'AsmJit-x86-Operands' 0
AJRegister AJRegister jv:dragonfly/asm 'AsmJit-Operands' 0
AJx64Assembler AJx64Assembler jv:dragonfly/asm 'AsmJit-x86' 0
-AJx64AssemblerTests AJx64AssemblerTests jv:dragonfly/asm 'AsmJit-Tests' 1
AJx64InstructionDescription AJx64InstructionDescription jv:dragonfly/asm 'AsmJit-x86-Instructions' 2
AJx64JumpInstruction AJx64JumpInstruction jv:dragonfly/asm 'AsmJit-x86-Instructions' 0
AJx87Register AJx87Register jv:dragonfly/asm 'AsmJit-x86-Operands' 0
AJxMMRegister AJxMMRegister jv:dragonfly/asm 'AsmJit-x86-Operands' 0
AJx86GPRegister AJx86GPRegister jv:dragonfly/asm 'AsmJit-x86-Operands' 0
AJx64RipRegister AJx64RipRegister jv:dragonfly/asm 'AsmJit-x86-Operands' 0
+AJStackAlignmentTests AJStackAlignmentTests jv:dragonfly/asm 'AsmJit-Tests' 1
+AJx86AssemblerTests AJx86AssemblerTests jv:dragonfly/asm 'AsmJit-Tests' 1
+AJx64AssemblerTests AJx64AssemblerTests jv:dragonfly/asm 'AsmJit-Tests' 1
+AJx86RegisterTests AJx86RegisterTests jv:dragonfly/asm 'AsmJit-Tests' 1
--- a/asm/bc.mak Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/bc.mak Thu Jun 16 16:56:52 2016 +0100
@@ -35,7 +35,7 @@
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
--- a/asm/jv_dragonfly_asm.st Wed Jun 15 23:46:29 2016 +0100
+++ b/asm/jv_dragonfly_asm.st Thu Jun 16 16:56:52 2016 +0100
@@ -102,7 +102,6 @@
by searching all classes (and their packages) which are referenced by my classes."
^ #(
- #'stx:goodies/sunit' "TestAsserter - superclass of AJStackAlignmentTests"
)
!
@@ -154,29 +153,33 @@
AJCallCleanup
AJImmediate
AJMem
- (AJStackAlignmentTests autoload)
AJx64Instruction
AJx86Assembler
- (AJx86AssemblerTests autoload)
AJx86InstructionDescription
AJx86JumpInstruction
- (AJx86RegisterTests autoload)
AJMMRegister
AJRegister
AJx64Assembler
- (AJx64AssemblerTests autoload)
AJx64InstructionDescription
AJx64JumpInstruction
AJx87Register
AJxMMRegister
AJx86GPRegister
AJx64RipRegister
+ (AJStackAlignmentTests autoload)
+ (AJx86AssemblerTests autoload)
+ (AJx64AssemblerTests autoload)
+ (AJx86RegisterTests autoload)
)
+
+ "Modified: / 16-06-2016 / 16:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
extensionMethodNames
- "list class/selector pairs of extensions.
- A correponding method with real names must be present in my concrete subclasses"
+ "lists the extension methods which are to be included in the project.
+ Entries are 2-element array literals, consisting of class-name and selector.
+ A correponding method with real names must be present in my concrete subclasses
+ if it has extensions."
^ #(
Integer asAJOperand
--- a/bc.mak Wed Jun 15 23:46:29 2016 +0100
+++ b/bc.mak Thu Jun 16 16:56:52 2016 +0100
@@ -35,7 +35,7 @@
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libcomp
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libcomp
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
@@ -68,10 +68,10 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)CompiledCodeObject.$(O) CompiledCodeObject.$(C) CompiledCodeObject.$(H): CompiledCodeObject.st $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CompiledCodeObjectSectionFormat.$(O) CompiledCodeObjectSectionFormat.$(C) CompiledCodeObjectSectionFormat.$(H): CompiledCodeObjectSectionFormat.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
$(OUTDIR)VMOffsets.$(O) VMOffsets.$(C) VMOffsets.$(H): VMOffsets.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
$(OUTDIR)jv_dragonfly.$(O) jv_dragonfly.$(C) jv_dragonfly.$(H): jv_dragonfly.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)CompiledCodeObject.$(O) CompiledCodeObject.$(C) CompiledCodeObject.$(H): CompiledCodeObject.st $(INCLUDE_TOP)\jv\dragonfly\CompiledCodeObjectSectionFormat.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CompiledCodeObjectSection.$(O) CompiledCodeObjectSection.$(C) CompiledCodeObjectSection.$(H): CompiledCodeObjectSection.st $(INCLUDE_TOP)\jv\dragonfly\CompiledCodeObjectSectionFormat.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
$(OUTDIR)VMData.$(O) VMData.$(C) VMData.$(H): VMData.st $(INCLUDE_TOP)\jv\dragonfly\VMOffsets.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jv_dragonfly.st Wed Jun 15 23:46:29 2016 +0100
+++ b/jv_dragonfly.st Thu Jun 16 16:56:52 2016 +0100
@@ -92,6 +92,7 @@
by searching all classes (and their packages) which are referenced by my classes."
^ #(
+ #'stx:goodies/sunit' "TestAsserter - superclass of CompiledCodeObjectExamples"
#'stx:libcomp' "ObjectFileLoader - referenced by VMData class>>initialize"
)
!
@@ -120,20 +121,23 @@
^ #(
"<className> or (<className> attributes...) in load order"
- CompiledCodeObject
+ (CompiledCodeObjectExamples autoload)
CompiledCodeObjectSectionFormat
VMOffsets
#'jv_dragonfly'
+ CompiledCodeObject
CompiledCodeObjectSection
+ (CompiledCodeObjectTests autoload)
VMData
- (CompiledCodeObjectTests autoload)
(ObjectFileLoaderTests autoload)
)
!
extensionMethodNames
- "list class/selector pairs of extensions.
- A correponding method with real names must be present in my concrete subclasses"
+ "lists the extension methods which are to be included in the project.
+ Entries are 2-element array literals, consisting of class-name and selector.
+ A correponding method with real names must be present in my concrete subclasses
+ if it has extensions."
^ #(
CompiledCode codeObject
--- a/libInit.cc Wed Jun 15 23:46:29 2016 +0100
+++ b/libInit.cc Thu Jun 16 16:56:52 2016 +0100
@@ -16,10 +16,10 @@
DLL_EXPORT void _libjv_dragonfly_InitDefinition() INIT_TEXT_SECTION;
#endif
-extern void _CompiledCodeObject_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _CompiledCodeObjectSectionFormat_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VMOffsets_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _jv_137dragonfly_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _CompiledCodeObject_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _CompiledCodeObjectSection_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VMData_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -35,10 +35,10 @@
void _libjv_dragonfly_Init(int pass, struct __vmData__ *__pRT__, OBJ snd)
{
__BEGIN_PACKAGE2__("libjv_dragonfly", _libjv_dragonfly_Init, "jv:dragonfly");
- _CompiledCodeObject_Init(pass,__pRT__,snd);
_CompiledCodeObjectSectionFormat_Init(pass,__pRT__,snd);
_VMOffsets_Init(pass,__pRT__,snd);
_jv_137dragonfly_Init(pass,__pRT__,snd);
+ _CompiledCodeObject_Init(pass,__pRT__,snd);
_CompiledCodeObjectSection_Init(pass,__pRT__,snd);
_VMData_Init(pass,__pRT__,snd);
--- a/udis86sx/jv_dragonfly_udis86sx.st Wed Jun 15 23:46:29 2016 +0100
+++ b/udis86sx/jv_dragonfly_udis86sx.st Thu Jun 16 16:56:52 2016 +0100
@@ -191,8 +191,10 @@
!
extensionMethodNames
- "list class/selector pairs of extensions.
- A correponding method with real names must be present in my concrete subclasses"
+ "lists the extension methods which are to be included in the project.
+ Entries are 2-element array literals, consisting of class-name and selector.
+ A correponding method with real names must be present in my concrete subclasses
+ if it has extensions."
^ #(
)