<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style='font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;'><div>Tobias.<br></div><div><br></div><div>Thanks.</div><div><br></div><div>I will remove it from VMMaker and add that repository to the BuildSqueakXYZImage.st scripts instead.</div><div><br></div><div>Cordially,</div><div><br></div><div><br></div><div>tty</div><div id="1"><br>---- On Mon, 02 Jun 2014 12:23:48 -0700 <b>Tobias Pape&lt;Das.Linux@gmx.de&gt;</b> wrote ---- <br></div><br><blockquote style="border-left: 1px solid #0000FF; padding-left: 6px; margin:0 0 0 5px">  <br>On 02.06.2014, at 19:17, <a href="mailto:commits@source.squeak.org" target="_blank" mailid="commits%40source.squeak.org" subj="">commits@source.squeak.org</a> wrote: <br> <br>&gt;  <br>&gt; Timothy M uploaded a new version of VMMaker to project VM Maker: <br>&gt; <a href="http://source.squeak.org/VMMaker/VMMaker.oscog-tty.750.mcz" target="_blank">http://source.squeak.org/VMMaker/VMMaker.oscog-tty.750.mcz</a> <br>&gt;  <br>&gt; ==================== Summary ==================== <br>&gt;  <br>&gt; Name: VMMaker.oscog-tty.750 <br>&gt; Author: tty <br>&gt; Time: 2 June 2014, 3:15:09.27 pm <br>&gt; UUID: 74f36217-bbce-4997-81fd-0944f9bb7f35 <br>&gt; Ancestors: VMMaker.oscog-tty.749 <br>&gt;  <br>&gt; Added ObjectiveCPlugin from pharo for use in CMakeVMMakerSqueak. While SVN Cog contains source code in: <br>&gt;  <br>&gt; /platforms/iOS/vm/src/vm/intplugins/ObjectiveCPlugin/ObjectiveCPlugin.c <br>&gt;  <br>&gt; There is no Smalltalk class in VMMaker until now <br> <br>Well, sure. That is because the Plugin lives here: <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.squeaksource.com/ObjectiveCBridge2.html" target="_blank">http://www.squeaksource.com/ObjectiveCBridge2.html</a> <br> <br> <br>&gt;  <br>&gt; =============== Diff against VMMaker.oscog-tty.749 =============== <br>&gt;  <br>&gt; Item was added: <br>&gt; + SmartSyntaxInterpreterPlugin subclass: #ObjectiveCPlugin <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;instanceVariableNames: '' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classVariableNames: '' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;poolDictionaries: '' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;category: 'VMMaker-Plugins'! <br>&gt; +  <br>&gt; + !ObjectiveCPlugin commentStamp: '&lt;historical&gt;' prior: 0! <br>&gt; + *  Created by John M McIntosh on 9/17/08. <br>&gt; +  <br>&gt; +  Some of this code was funded via a grant from the European Smalltalk User Group (ESUG) <br>&gt; +  Copyright (c) 2008 Corporate Smalltalk Consulting Ltd. All rights reserved. <br>&gt; +  MIT License <br>&gt; +  Permission is hereby granted, free of charge, to any person <br>&gt; +  obtaining a copy of this software and associated documentation <br>&gt; +  files (the "Software"), to deal in the Software without <br>&gt; +  restriction, including without limitation the rights to use, <br>&gt; +  copy, modify, merge, publish, distribute, sublicense, and/or sell <br>&gt; +  copies of the Software, and to permit persons to whom the <br>&gt; +  Software is furnished to do so, subject to the following <br>&gt; +  conditions: <br>&gt; +   <br>&gt; +  The above copyright notice and this permission notice shall be <br>&gt; +  included in all copies or substantial portions of the Software. <br>&gt; +   <br>&gt; +  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, <br>&gt; +  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES <br>&gt; +  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND <br>&gt; +  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT <br>&gt; +  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, <br>&gt; +  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING <br>&gt; + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR <br>&gt; + OTHER DEALINGS IN THE SOFTWARE. <br>&gt; +  <br>&gt; + The end-user documentation included with the redistribution, if any, must include the following acknowledgment:  <br>&gt; + "This product includes software developed by Corporate Smalltalk Consulting Ltd (<a href="http://www.smalltalkconsulting.com" target="_blank">http://www.smalltalkconsulting.com</a>)  <br>&gt; + and its contributors", in the same place and form as other third-party acknowledgments.  <br>&gt; + Alternately, this acknowledgment may appear in the software itself, in the same form and location as other  <br>&gt; + such third-party acknowledgments. <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;initialiseModule (in category 'initialize-release') ----- <br>&gt; + initialiseModule <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;"Initialise the module" <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp; <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^ true <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveCallbackLeave: (in category 'system primitives') ----- <br>&gt; + primitiveCallbackLeave: aNumber <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveCallbackLeave' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(SmallInteger). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;aNumber = 0 ifTrue: [^self]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy callbackLeave: aNumber.! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetAddressFromEntryPointString: (in category 'system primitives') ----- <br>&gt; + primitiveGetAddressFromEntryPointString: aEntryPointName <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;| entryPointNameLength fn entryPointName  | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetAddressFromEntryPointString' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(String). <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'entryPointName' declareC: 'char entryPointName[256]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'fn' declareC: 'void * fn'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;entryPointNameLength := interpreterProxy slotSizeOf: aEntryPointName cPtrAsOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;entryPointNameLength &gt; 255 ifTrue: [^interpreterProxy positive64BitIntegerFor: 0]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self str: entryPointName l: aEntryPointName cpy: entryPointNameLength+1. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;fn  := self dl: -2 sym: entryPointName. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: fn to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetAutoReleasePool (in category 'system primitives') ----- <br>&gt; + primitiveGetAutoReleasePool <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  pool | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetAutoReleasePool'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'pool' declareC: 'NSAutoreleasePool * pool'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;pool := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'pool = [NSAutoreleasePool new]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: pool to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetClass: (in category 'system primitives') ----- <br>&gt; + primitiveGetClass: aClassOrInstanceOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  classOrInstanceObject classObject | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetClass' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classObject' declareC: 'Class classObject'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classObject := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classOrInstanceObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'classObject = [classOrInstanceObject class]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classObject = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: classObject to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetDescription: (in category 'system primitives') ----- <br>&gt; + primitiveGetDescription: aClassOrInstanceOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  classOrInstanceObject utf8String utf8StringOop nsStringObject | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetDescription' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsStringObject' declareC: 'NSString* nsStringObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'utf8String' declareC: 'const char * utf8String'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;utf8String := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsStringObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'nsStringObject = [classOrInstanceObject description]; <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utf8String = [nsStringObject UTF8String]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utf8String = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;utf8String <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;utf8StringOop := self stringFromCString: utf8String. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^utf8StringOop <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetMethodSignatureForSelector:on: (in category 'system primitives') ----- <br>&gt; + primitiveGetMethodSignatureForSelector: aSelectorOop on: aClassOrInstanceOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  selectorObject classOrInstanceObject messageSignatureObject | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetMethodSignatureForSelector' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorObject' declareC: 'SEL selectorObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'messageSignatureObject' declareC: 'NSMethodSignature * messageSignatureObject'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject := self cCoerce: (interpreterProxy positive64BitValueOf: aSelectorOop) to: 'SEL'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;messageSignatureObject := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classOrInstanceObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: selectorObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'messageSignatureObject = [classOrInstanceObject methodSignatureForSelector: selectorObject]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;messageSignatureObject = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: messageSignatureObject to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetNSStringForString:encoding: (in category 'system primitives') ----- <br>&gt; + primitiveGetNSStringForString: aStringOop encoding: anEncoding <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;| stringLength aStringAsNSString encoding aString | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetNSStringForString' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aStringAsNSString' declareC: 'NSString* aStringAsNSString'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'encoding' declareC: 'NSUInteger encoding'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aString' declareC: 'char* aString'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;encoding := self cCoerce: (interpreterProxy positive64BitValueOf: anEncoding) to: 'NSUInteger'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;aString := interpreterProxy firstIndexableField: aStringOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;stringLength := interpreterProxy byteSizeOf: aStringOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: stringLength. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;aStringAsNSString := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aStringAsNSString := self cCode: '[[NSString alloc] initWithBytes: aString length: stringLength encoding: encoding]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aStringAsNSString = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: aStringAsNSString to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetObjCClassForString: (in category 'system primitives') ----- <br>&gt; + primitiveGetObjCClassForString: aClassName <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;| classNameLength classNameNSString classObject | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetObjCClassForString' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Symbol). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classObject' declareC: 'Class classObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classNameNSString' declareC: 'NSString* classNameNSString'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classNameLength := interpreterProxy slotSizeOf: aClassName cPtrAsOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classNameLength. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classNameNSString := self cCode: '[[NSString alloc] initWithBytes: aClassName length: classNameLength encoding: NSUTF8StringEncoding]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classObject := classNameNSString NSClassFromString. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classObject = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '[classNameNSString release]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: classObject to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetSelectorFromString: (in category 'system primitives') ----- <br>&gt; + primitiveGetSelectorFromString: aSelectorName <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;| selectorLength selectorNSString selectorObject | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetSelectorForString' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Symbol). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorObject' declareC: 'SEL selectorObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorNSString' declareC: 'NSString * selectorNSString'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorLength := interpreterProxy slotSizeOf: aSelectorName cPtrAsOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: selectorLength. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorNSString := self cCode: '[[NSString alloc] initWithBytes: aSelectorName length: selectorLength encoding: NSUTF8StringEncoding]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject := selectorNSString NSSelectorFromString. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '[selectorNSString release]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: selectorObject to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveGetSuperClass: (in category 'system primitives') ----- <br>&gt; + primitiveGetSuperClass: aClassOrInstanceOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  classOrInstanceObject classObject | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveGetSuperClass' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classObject' declareC: 'Class classObject'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classObject := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classOrInstanceObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'classObject = [classOrInstanceObject superclass]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classObject = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: classObject to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveIsEqual:to: (in category 'system primitives') ----- <br>&gt; + primitiveIsEqual: anOop1 to: anOop2 <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  oop1 oop2 result | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveIsEqual' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'oop1' declareC: 'id oop1'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'oop2' declareC: 'id oop2'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'result' declareC: 'BOOL result'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;oop1 := self cCoerce: (interpreterProxy positive64BitValueOf: anOop1) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;oop2 := self cCoerce: (interpreterProxy positive64BitValueOf: anOop2) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: oop1. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: oop2. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;result := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'result = [oop1 isEqual: oop2]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^(result = 1) asBooleanObj <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveMethodSignatureGetArgumentType:atIndex: (in category 'system primitives') ----- <br>&gt; + primitiveMethodSignatureGetArgumentType: aMethodSignatureOop atIndex: aIndexNumber <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsMethodSignatureObject string stringOop | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveMethodSignatureGetArgumentType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsMethodSignatureObject' declareC: 'NSMethodSignature* nsMethodSignatureObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'string' declareC: 'const char * string'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsMethodSignatureObject := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSMethodSignature *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;string := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsMethodSignatureObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'string = [nsMethodSignatureObject getArgumentTypeAtIndex: aIndexNumber]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;string <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;stringOop := self stringFromCString: string. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^stringOop <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveMethodSignatureGetMethodReturnLength: (in category 'system primitives') ----- <br>&gt; + primitiveMethodSignatureGetMethodReturnLength: aMethodSignatureOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsMethodSignatureObject methodReturnLength | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveMethodSignatureGetMethodReturnLength' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsMethodSignatureObject' declareC: 'NSMethodSignature* nsMethodSignatureObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'methodReturnLength' declareC: 'NSUInteger methodReturnLength'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsMethodSignatureObject := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSMethodSignature *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;methodReturnLength := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsMethodSignatureObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'methodReturnLength = [nsMethodSignatureObject methodReturnLength]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodReturnLength = 0xFFFFFFFF'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;methodReturnLength = 16rFFFFFFFF <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: methodReturnLength to: 'usqInt')  <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveMethodSignatureGetNumberOfArguments: (in category 'system primitives') ----- <br>&gt; + primitiveMethodSignatureGetNumberOfArguments: aMethodSignatureOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsMethodSignatureObject numberOfArguments | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveMethodSignatureGetNumberOfArguments' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsMethodSignatureObject' declareC: 'NSMethodSignature* nsMethodSignatureObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'numberOfArguments' declareC: 'NSUInteger numberOfArguments'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsMethodSignatureObject := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSMethodSignature *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;numberOfArguments := 9999999. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsMethodSignatureObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'numberOfArguments = [nsMethodSignatureObject numberOfArguments]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberOfArguments = 9999999'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;numberOfArguments = 9999999 <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: numberOfArguments to: 'usqInt')  <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveMethodSignatureGetReturnType: (in category 'system primitives') ----- <br>&gt; + primitiveMethodSignatureGetReturnType: aMethodSignatureOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsMethodSignatureObject string stringOop | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveMethodSignatureGetReturnType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsMethodSignatureObject' declareC: 'NSMethodSignature* nsMethodSignatureObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'string' declareC: 'const char * string'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsMethodSignatureObject := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSMethodSignature *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;string := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsMethodSignatureObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'string = [nsMethodSignatureObject methodReturnType]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;string <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;stringOop := self stringFromCString: string. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^stringOop <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationCalloc: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationCalloc: size <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  pointer | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationCalloc' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(SmallInteger). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'pointer' declareC: 'void* pointer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'pointer = calloc(size,1)'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: pointer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationFree: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationFree: pointer <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  pointerToFree | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationFree' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'pointerToFree' declareC: 'void* pointerToFree'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;pointerToFree := self cCoerce: (interpreterProxy positive64BitValueOf: pointer) to: 'void *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'free((void*)pointerToFree)'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: pointer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^self! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetArgument:buffer:atIndex: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetArgument: aMethodSignatureOop buffer: bufferOop atIndex: index <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetArgument' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop SmallInteger). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferOop) to: 'void *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance getArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^self! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetCType:signed: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetCType: bufferAddressOop signed: signedBoolean <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer newCharacterOop targetOopData | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetCType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'char * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'targetOopData' declareC: 'char targetOopData'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'char *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;newCharacterOop := interpreterProxy <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instantiateClass: interpreterProxy classCharacter <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indexableSize: 1. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;targetOopData := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: targetOopData. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [self cCode: 'targetOopData = *(char*) buffer'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy storeInteger: 0 ofObject: newCharacterOop withValue:  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (self cCoerce: targetOopData to: 'sqInt').] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [self cCode: 'targetOopData = *(char*) buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy storeInteger: 0 ofObject: newCharacterOop withValue:  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (self cCoerce: targetOopData to: 'usqInt').]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp; <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^newCharacterOop! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetCharPointerType: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetCharPointerType: bufferAddressOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer stringOop bufferPointer | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetCharPointerType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'bufferPointer' declareC: 'char ** bufferPointer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'char * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;bufferPointer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'char **'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = *bufferPointer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;stringOop := self stringFromCString: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^stringOop <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetClassType: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetClassType: bufferAddressOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetClassType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'Class * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'Class data'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'Class *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: data to: 'usqInt')  <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetDoubleType: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetDoubleType: bufferAddressOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetDoubleType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'double * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'double data'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'double *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy floatObjectOf: data! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetFloatType: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetFloatType: bufferAddressOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetFloatType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'float * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'float data'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'float *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy floatObjectOf: data! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetIntType:signed: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetIntType: bufferAddressOop signed: signedBoolean <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data unsignedData | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetIntType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'int * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'int data'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'unsignedData' declareC: 'unsigned int unsignedData'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'int *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;unsignedData := data := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy signed32BitIntegerFor: (self cCoerce: data to: 'sqInt') ] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [self cCode: 'unsignedData = *(unsigned int *)buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive32BitIntegerFor: (self cCoerce: unsignedData to: 'usqInt') ]. <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetLongLongType:signed: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetLongLongType: bufferAddressOop signed: signedBoolean <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data unsignedData | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetLongLongType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'long long * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'long long data'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'unsignedData' declareC: 'unsigned long long unsignedData'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'long long *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;unsignedData := data := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy signed64BitIntegerFor: (self cCoerce: data to: 'long long') ] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [self cCode: 'unsignedData = * (unsigned long long*) buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: unsignedData to: 'unsigned long long') ]. <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetLongType:signed: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetLongType: bufferAddressOop signed: signedBoolean <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data unsignedData | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetLongType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'long * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'long data'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'unsignedData' declareC: 'unsigned long unsignedData'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'long *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;unsignedData := data := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy signed64BitIntegerFor: (self cCoerce: data to: 'sqInt') ] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [self cCode: 'unsignedData = *(unsigned long *) buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: unsignedData to: 'usqInt') ]. <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetObjectType: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetObjectType: bufferAddressOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetObjectType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'id * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'id data'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'id *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: data to: 'usqInt')  <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetReturnValue:on: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetReturnValue: bufferAddressOop on: aNSinvokeOops <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer nsInvoke | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetReturnValue' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvoke' declareC: 'NSInvocation *nsInvoke'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'void *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvoke := self cCoerce: (interpreterProxy positive64BitValueOf: aNSinvokeOops) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvoke getReturnValue: buffer]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^self! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetSelectorType: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetSelectorType: bufferAddressOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetSelectorType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'SEL * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'SEL data'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'SEL *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: data to: 'usqInt')  <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetShortType:signed: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetShortType: bufferAddressOop signed: signedBoolean <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  buffer data unsignedData | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetShortType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'short * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'data' declareC: 'short data'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'unsignedData' declareC: 'unsigned short unsignedData'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;buffer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'short *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;unsignedData := data := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [self cCode: 'data = *buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy signed32BitIntegerFor: (self cCoerce: data to: 'sqInt') ] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [self cCode: 'unsignedData = *(unsigned short *)buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive32BitIntegerFor: (self cCoerce: unsignedData to: 'usqInt') ]. <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationGetStructureType:length: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationGetStructureType: bufferAddressOop length: length <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  bufferPointer newByteArray | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationGetStructureType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'bufferPointer' declareC: 'char ** bufferPointer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'char * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;bufferPointer := self cCoerce: (interpreterProxy positive64BitValueOf: bufferAddressOop) to: 'void *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;newByteArray := interpreterProxy <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instantiateClass: interpreterProxy classByteArray <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indexableSize: length. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self me: (interpreterProxy arrayValueOf: newByteArray) <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m: bufferPointer <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpy: length. "void * memcpy(void *restrict s1, const void *restrict s2, size_t n)" <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^newByteArray <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationMalloc: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationMalloc: size <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  pointer | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationMalloc' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(SmallInteger). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'pointer' declareC: 'void* pointer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'pointer = malloc(size)'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: pointer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetCType:signed:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetCType: aMethodSignatureOop signed: signedBoolean index: index value: newCharacterOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer aValue aUnsignedValue | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetCType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean SmallInteger Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'char aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aUnsignedValue' declareC: 'unsigned char aUnsignedValue'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;aValue := interpreterProxy fetchInteger: 0 ofObject: newCharacterOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;aUnsignedValue := interpreterProxy fetchInteger: 0 ofObject: newCharacterOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [self cCode: 'buffer = malloc(sizeof(char)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(char*) buffer = (char) aValue'] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [self cCode: 'buffer = malloc(sizeof(unsigned char)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(unsigned char*)buffer = (unsigned char) aUnsignedValue']. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetDoubleType:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetDoubleType: aMethodSignatureOop  index: index value: aValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetDoubleType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger Float). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'double aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(double)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(double*) buffer = (double) aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetFloatType:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetFloatType: aMethodSignatureOop  index: index value: aValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetFloatType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger Float). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'float aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(float)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(float*) buffer = (float) aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetIntType:signed:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetIntType: aMethodSignatureOop signed: signedBoolean index: index value: intValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer aValue | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetIntType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean SmallInteger Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'int aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [aValue := self cCoerce: (interpreterProxy signed64BitValueOf: intValue) to: 'int'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(int)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(int*) buffer = (int) aValue'] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [aValue := self cCoerce: (interpreterProxy positive64BitValueOf: intValue) to: 'unsigned int'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(unsigned int)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(unsigned int*)buffer = (unsigned int) aValue']. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetLongLongType:signed:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetLongLongType: aMethodSignatureOop signed: signedBoolean index: index value: intValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer aValue | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetLongLongType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean SmallInteger Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'long long aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [aValue := self cCoerce: (interpreterProxy signed64BitValueOf: intValue) to: 'long long'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(long long)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(long long*) buffer = (long long) aValue'] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [aValue := self cCoerce: (interpreterProxy positive64BitValueOf: intValue) to: 'unsigned long long'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(unsigned long long)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(unsigned long long*)buffer = (unsigned long long) aValue']. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetLongType:signed:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetLongType: aMethodSignatureOop signed: signedBoolean index: index value: intValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer aValue | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetLongType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean SmallInteger Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'long aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [aValue := self cCoerce: (interpreterProxy signed64BitValueOf: intValue) to: 'long'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(long)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(long*) buffer = (long) aValue'] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [aValue := self cCoerce: (interpreterProxy positive64BitValueOf: intValue) to: 'unsigned long'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(unsigned long)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(unsigned long*)buffer = (unsigned long) aValue']. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetPointerType:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetPointerType: aMethodSignatureOop  index: index value: pointerValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer aValue | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetPointerType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'void * aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void ** buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;aValue := self cCoerce: (interpreterProxy positive64BitValueOf: pointerValue) to: 'char *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(void*)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*buffer = aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetRetained: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetRetained: aMethodSignatureOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetRetained' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance retainArguments]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetSelector:target:on: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetSelector: aSelectorOop target: object1Oops on: aNSinvokeOops <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  selectorObject object1 nsInvoke | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetSelector' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop Oop). <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'object1' declareC: 'id object1'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorObject' declareC: 'SEL selectorObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvoke' declareC: 'NSInvocation *nsInvoke'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject := self cCoerce: (interpreterProxy positive64BitValueOf: aSelectorOop) to: 'SEL'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;object1 := self cCoerce: (interpreterProxy positive64BitValueOf: object1Oops) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvoke := self cCoerce: (interpreterProxy positive64BitValueOf: aNSinvokeOops) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvoke setSelector: selectorObject]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvoke setTarget:  object1]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^self]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^self! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetShortType:signed:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetShortType: aMethodSignatureOop signed: signedBoolean index: index value: intValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer aValue | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetShortType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Boolean SmallInteger Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'short aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;signedBoolean  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [aValue := self cCoerce: (interpreterProxy signed64BitValueOf: intValue) to: 'short'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(short)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(short*) buffer = (short) aValue'] <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [aValue := self cCoerce: (interpreterProxy positive64BitValueOf: intValue) to: 'unsigned short'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(sizeof(unsigned short)); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(unsigned short*)buffer = (unsigned short) aValue']. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetStringType:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetStringType: aMethodSignatureOop  index: index value: aValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer stringSize | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetStringType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger String). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aValue' declareC: 'char * aValue'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'char * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;stringSize := interpreterProxy slotSizeOf: aValue cPtrAsOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(stringSize + 1); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(buffer,aValue,stringSize); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer[stringSize] = 0x00'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: &amp;buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetStructureType:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetStructureType: aMethodSignatureOop  index: index value: aValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer byteArraySize | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetStructureType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger ByteArray). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;byteArraySize := interpreterProxy slotSizeOf: aValue cPtrAsOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(byteArraySize); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(buffer,aValue,byteArraySize)'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: byteArraySize. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationSetVoidPointerType:index:value: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationSetVoidPointerType: aMethodSignatureOop  index: index value: aValue <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsInvocationInstance buffer byteArraySize | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationSetVoidPointerType' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop SmallInteger ByteArray). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationInstance' declareC: 'NSInvocation* nsInvocationInstance'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'buffer' declareC: 'void * buffer'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationInstance := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSInvocation *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;byteArraySize := interpreterProxy slotSizeOf: aValue cPtrAsOop. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: 'buffer = malloc(byteArraySize); <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(buffer,aValue,byteArraySize)'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsInvocationInstance. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: buffer. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: byteArraySize. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[nsInvocationInstance setArgument: &amp;buffer atIndex: index]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: buffer to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSInvocationWithMethodSignature: (in category 'system primitives') ----- <br>&gt; + primitiveNSInvocationWithMethodSignature: aMethodSignatureOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  methodSignatureOop nsInvocationOops | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSInvocationWithMethodSignature' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'methodSignatureOop' declareC: 'NSMethodSignature * methodSignatureOop'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsInvocationOops' declareC: 'NSInvocation* nsInvocationOops'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;methodSignatureOop := self cCoerce: (interpreterProxy positive64BitValueOf: aMethodSignatureOop) to: 'NSMethodSignature *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsInvocationOops := 0. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'nsInvocationOops = [NSInvocation invocationWithMethodSignature: methodSignatureOop]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: nsInvocationOops to: 'usqInt')  <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSLog: (in category 'system primitives') ----- <br>&gt; + primitiveNSLog: aNSStringOOP <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  oop1 | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSLog' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'oop1' declareC: 'id oop1'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp; <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;oop1 := self cCoerce: (interpreterProxy positive64BitValueOf: aNSStringOOP) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: oop1. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self NSLog: oop1. <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveNSStringToUTF8: (in category 'system primitives') ----- <br>&gt; + primitiveNSStringToUTF8: aNSStringOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  nsStringObject utf8String utf8StringOop | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveNSStringToUTF8' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'nsStringObject' declareC: 'NSString* nsStringObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'utf8String' declareC: 'const char * utf8String'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;nsStringObject := self cCoerce: (interpreterProxy positive64BitValueOf: aNSStringOop) to: 'NSString *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;utf8String := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: nsStringObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'utf8String = [nsStringObject UTF8String]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utf8String = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;utf8String <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;utf8StringOop := self stringFromCString: utf8String. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^utf8StringOop <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitivePerformSelector:on: (in category 'system primitives') ----- <br>&gt; + primitivePerformSelector: aSelectorOop on: aClassOrInstanceOop <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  classOrInstanceObject  selectorObject returnValue | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;"- (id)performSelector:(SEL)aSelector" <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitivePerformSelector' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorObject' declareC: 'SEL selectorObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'returnValue' declareC: 'id returnValue'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject := self cCoerce: (interpreterProxy positive64BitValueOf: aSelectorOop) to: 'SEL'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;returnValue := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classOrInstanceObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: selectorObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'returnValue = [classOrInstanceObject performSelector: selectorObject]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnValue = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: returnValue to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitivePerformSelectorOnMainThreadWithWaitTilDone:on:with:returnValue:waitTilDone: (in category 'system primitives') ----- <br>&gt; + primitivePerformSelectorOnMainThreadWithWaitTilDone: aSelectorOop on: aClassOrInstanceOop with: anObject1 returnValue: aReturnValueAddress waitTilDone: doneFlag <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  classOrInstanceObject  selectorObject object1 returnAddress | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;"- (id)performSelector:(SEL)aSelector" <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitivePerformSelectorOnMainThreadWithWaitTilDone' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop Oop Oop Boolean). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'object1' declareC: 'id object1'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorObject' declareC: 'SEL selectorObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'returnAddress' declareC: 'void *returnAddress'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject := self cCoerce: (interpreterProxy positive64BitValueOf: aSelectorOop) to: 'SEL'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;object1 := self cCoerce: (interpreterProxy positive64BitValueOf: anObject1) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;returnAddress := self cCoerce: (interpreterProxy positive64BitValueOf: aReturnValueAddress) to: 'void *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classOrInstanceObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: selectorObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: object1. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: returnAddress. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  '[classOrInstanceObject performSelectorOnMainThread: selectorObject withObject: object1 waitUntilDone: doneFlag  ]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;returnAddress ~= 0 ifTrue: <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[self cCode: '[classOrInstanceObject getReturnValue: returnAddress]']. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy success: false. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^self! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitivePerformSelectorWith:on:with: (in category 'system primitives') ----- <br>&gt; + primitivePerformSelectorWith: aSelectorOop on: aClassOrInstanceOop with: anObject1 <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  classOrInstanceObject  selectorObject returnValue object1 | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;"- (id)performSelector:(SEL)aSelector" <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitivePerformSelectorWith' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'object1' declareC: 'id object1'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorObject' declareC: 'SEL selectorObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'returnValue' declareC: 'id returnValue'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject := self cCoerce: (interpreterProxy positive64BitValueOf: aSelectorOop) to: 'SEL'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;object1 := self cCoerce: (interpreterProxy positive64BitValueOf: anObject1) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;returnValue := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classOrInstanceObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: selectorObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: object1. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'returnValue = [classOrInstanceObject performSelector: selectorObject withObject: object1]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnValue = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: returnValue to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitivePerformSelectorWithWith:on:with:with: (in category 'system primitives') ----- <br>&gt; + primitivePerformSelectorWithWith: aSelectorOop on: aClassOrInstanceOop with: anObject1 with: anObject2 <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  classOrInstanceObject  selectorObject returnValue object1 object2 | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;"- (id)performSelector:(SEL)aSelector" <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitivePerformSelectorWithWith' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop Oop Oop Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'classOrInstanceObject' declareC: 'id classOrInstanceObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'object1' declareC: 'id object1'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'object2' declareC: 'id object2'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'selectorObject' declareC: 'SEL selectorObject'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'returnValue' declareC: 'id returnValue'. <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;classOrInstanceObject := self cCoerce: (interpreterProxy positive64BitValueOf: aClassOrInstanceOop) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;selectorObject := self cCoerce: (interpreterProxy positive64BitValueOf: aSelectorOop) to: 'SEL'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;object1 := self cCoerce: (interpreterProxy positive64BitValueOf: anObject1) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;object2 := self cCoerce: (interpreterProxy positive64BitValueOf: anObject2) to: 'id'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;returnValue := nil. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: classOrInstanceObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: selectorObject. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: object1. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self touch: object2. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_DURING'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode:  'returnValue = [classOrInstanceObject performSelector: selectorObject withObject: object1 withObject: object2 ]'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_HANDLER  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnValue = nil;'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '    NS_ENDHANDLER'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^interpreterProxy positive64BitIntegerFor: (self cCoerce: returnValue to: 'usqInt') ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;primitiveSELGetName: (in category 'system primitives') ----- <br>&gt; + primitiveSELGetName: aSEL <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;|  stringOop bufferPointer | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self primitive: 'primitiveSELGetName' <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: #(Oop). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'bufferPointer' declareC: 'SEL bufferPointer'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self cCode: '#define selgetName sel_getName <br>&gt; + '. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;bufferPointer := self cCoerce: (interpreterProxy positive64BitValueOf: aSEL) to: 'SEL'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;interpreterProxy failed ifTrue: [^nil]. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;stringOop := self stringFromCString: (self selgetName: bufferPointer). <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^stringOop <br>&gt; + ! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;shutdownModule (in category 'initialize-release') ----- <br>&gt; + shutdownModule <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^true! <br>&gt;  <br>&gt; Item was added: <br>&gt; + ----- Method: ObjectiveCPlugin&gt;&gt;stringFromCString: (in category 'system primitives') ----- <br>&gt; + stringFromCString: aCString <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;"Answer a new String copied from a null-terminated C string. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;Caution: This may invoke the garbage collector." <br>&gt; +  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;| len newString | <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self var: 'aCString' type: 'const char *'. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;len := self cCoerce: (self strlen: aCString) to: 'sqInt'.  <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;newString := interpreterProxy <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instantiateClass: interpreterProxy classString <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indexableSize: len. <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;self st: (interpreterProxy arrayValueOf: newString) <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rn: aCString <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpy: len. "(char *)strncpy()" <br>&gt; + &nbsp;&nbsp;&nbsp;&nbsp;^ newString <br>&gt; +  <br>&gt; + ! <br>&gt;  <br> <br></blockquote><br></div></body></html>