Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker-eem.291.mcz
==================== Summary ====================
Name: VMMaker-eem.291 Author: eem Time: 11 December 2012, 1:27:23.704 pm UUID: 1b5cd88a-d31b-4b1e-8dca-1a0e548a8310 Ancestors: VMMaker-dtl.290
Fix receiver of a remapOop:in: send in LargeIntegersPlugin. Replace _'s with :='s in the ImmX11Plugin (so it can load into trunk without fooling with settings) and categorize.
=============== Diff against VMMaker-dtl.290 ===============
Item was changed: + ----- Method: ImmX11Plugin>>initialiseModule (in category 'initialize-release') ----- - ----- Method: ImmX11Plugin>>initialiseModule (in category 'as yet unclassified') ----- initialiseModule
<export: true> ^ true !
Item was changed: + ----- Method: ImmX11Plugin>>primGetEncoding (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primGetEncoding (in category 'as yet unclassified') ----- primGetEncoding
| ret array len |
<export: true> <var: #len type: 'int'> <var: #array type: 'char *'> len := self cCode: 'strlen(sqTextEncoding)'.
ret := interpreterProxy instantiateClass: interpreterProxy classString indexableSize: len. array := self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. self cCode: 'strncpy(array, (char *)sqTextEncoding, len)'. ^ ret.!
Item was changed: + ----- Method: ImmX11Plugin>>primGetLocale (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primGetLocale (in category 'as yet unclassified') ----- primGetLocale
| ret array len locale |
<export: true> <var: #len type: 'int'> <var: #array type: 'char *'> <var: #locale type: 'char *'> + locale := self cCode: 'setlocale(LC_CTYPE, "")'. - locale _ self cCode: 'setlocale(LC_CTYPE, "")'. (self cCode: 'locale') + ifFalse: [ ret := interpreterProxy nilObject ] - ifFalse: [ ret _ interpreterProxy nilObject ] ifTrue: [ + len := self cCode: 'strlen(locale)'. + ret := interpreterProxy - len _ self cCode: 'strlen(locale)'. - ret _ interpreterProxy instantiateClass: interpreterProxy classString indexableSize: len. + array := self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. - array _ self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. self cCode: 'strncpy(array, (char *)locale, len)'. ]. ^ ret.!
Item was changed: + ----- Method: ImmX11Plugin>>primGetLocaleEncoding (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primGetLocaleEncoding (in category 'as yet unclassified') ----- primGetLocaleEncoding
| ret array len |
<export: true> <var: #len type: 'int'> <var: #array type: 'char *'>
(self cCode: '(int) localeEncoding') ifFalse: [ ret := interpreterProxy nilObject ] ifTrue: [ len := self cCode: 'strlen(localeEncoding)'. ret := interpreterProxy instantiateClass: interpreterProxy classString indexableSize: len. array := self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. self cCode: 'strncpy(array, (char *)localeEncoding, len)'. ]. ^ ret.!
Item was changed: + ----- Method: ImmX11Plugin>>primGetPathEnc (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primGetPathEnc (in category 'as yet unclassified') ----- primGetPathEnc
| ret array len |
<export: true> <var: #len type: 'int'> <var: #array type: 'char *'> len := self cCode: 'strlen(uxPathEncoding)'.
ret := interpreterProxy instantiateClass: interpreterProxy classString indexableSize: len. array := self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. self cCode: 'strncpy(array, (char *)uxPathEncoding, len)'. ^ ret.!
Item was changed: + ----- Method: ImmX11Plugin>>primGetTextEnc (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primGetTextEnc (in category 'as yet unclassified') ----- primGetTextEnc
| ret array len |
<export: true> <var: #len type: 'int'> <var: #array type: 'char *'> len := self cCode: 'strlen(uxTextEncoding)'.
ret := interpreterProxy instantiateClass: interpreterProxy classString indexableSize: len. array := self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. self cCode: 'strncpy(array, (char *)uxTextEncoding, len)'. ^ ret.!
Item was changed: + ----- Method: ImmX11Plugin>>primGetXWinEnc (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primGetXWinEnc (in category 'as yet unclassified') ----- primGetXWinEnc
| ret array len |
<export: true> <var: #len type: 'int'> <var: #array type: 'char *'> len := self cCode: 'strlen(uxXWinEncoding)'.
ret := interpreterProxy instantiateClass: interpreterProxy classString indexableSize: len. array := self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. self cCode: 'strncpy(array, (char *)uxXWinEncoding, len)'. ^ ret.!
Item was changed: + ----- Method: ImmX11Plugin>>primIsTextEncUTF8 (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primIsTextEncUTF8 (in category 'as yet unclassified') ----- primIsTextEncUTF8
<export: true> self primitive: 'primIsTextEncUTF8'. ^ (self cCode: 'textEncodingUTF8') asOop: Boolean.!
Item was changed: + ----- Method: ImmX11Plugin>>primSetCompositionFocus: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetCompositionFocus: (in category 'as yet unclassified') ----- primSetCompositionFocus: bool
| ret | <export: true> self primitive: 'primSetCompositionFocus' parameters: #(Boolean). ret := self cCode: 'setCompositionFocus(bool)'.
ret = false ifTrue: [ interpreterProxy primitiveFail. ^ nil ].
^ ret asOop: Boolean !
Item was changed: + ----- Method: ImmX11Plugin>>primSetCompositionWindowPositionX:y: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetCompositionWindowPositionX:y: (in category 'as yet unclassified') ----- primSetCompositionWindowPositionX: x y: y
| ret |
<export: true> self primitive: 'primSetCompositionWindowPosition' parameters: #(SmallInteger SmallInteger).
ret := self cCode: 'setCompositionWindowPosition(x, y)'.
ret = false ifTrue: [ interpreterProxy primitiveFail. ^ nil ].
^ ret asOop: Boolean
!
Item was changed: + ----- Method: ImmX11Plugin>>primSetEncoding: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetEncoding: (in category 'as yet unclassified') ----- primSetEncoding: encoding
| name len | <export: true> <var: #name type: 'char *'> <var: #len type: 'size_t'> + len := interpreterProxy stSizeOf: encoding. + name := self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. - len _ interpreterProxy stSizeOf: encoding. - name _ self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. self cCode: 'setNEncoding(&sqTextEncoding, name, len)'. ^ encoding. !
Item was changed: + ----- Method: ImmX11Plugin>>primSetEncodingToLocale (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetEncodingToLocale (in category 'as yet unclassified') ----- primSetEncodingToLocale
| ret | <export: true> self primitive: 'primSetEncodingToLocale'. (self cCode: '(int) localeEncoding') ifFalse: [ ret := interpreterProxy falseObject ] ifTrue: [ self cCode: 'sqTextEncoding = (void *)localeEncoding'. ret := interpreterProxy trueObject ]. ^ ret!
Item was changed: + ----- Method: ImmX11Plugin>>primSetLocale: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetLocale: (in category 'as yet unclassified') ----- primSetLocale: locale
| name len ret array | <export: true> <var: #name type: 'char *'> <var: #array type: 'char *'> <var: #len type: 'size_t'> + len := interpreterProxy stSizeOf: locale. + name := self cCoerce: (interpreterProxy arrayValueOf: locale) to: 'char *'. + name := self cCode: 'setLocale(name, len)'. - len _ interpreterProxy stSizeOf: locale. - name _ self cCoerce: (interpreterProxy arrayValueOf: locale) to: 'char *'. - name _ self cCode: 'setLocale(name, len)'. (self cCode: '(int) name') ifFalse: [^ interpreterProxy nilObject ] ifTrue: [ + len := self cCode: 'strlen(name)'. + ret := interpreterProxy - len _ self cCode: 'strlen(name)'. - ret _ interpreterProxy instantiateClass: interpreterProxy classString indexableSize: len. + array := self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. - array _ self cCoerce: (interpreterProxy firstIndexableField: ret) to: 'char *'. self cCode: 'strncpy(array, (char *)name, len)'. ^ ret ]. !
Item was changed: + ----- Method: ImmX11Plugin>>primSetLocaleEncoding: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetLocaleEncoding: (in category 'as yet unclassified') ----- primSetLocaleEncoding: encoding
| name len | <export: true> <var: #name type: 'char *'> <var: #len type: 'size_t'> + len := interpreterProxy stSizeOf: encoding. + name := self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. - len _ interpreterProxy stSizeOf: encoding. - name _ self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. self cCode: 'setNEncoding(&localeEncoding, name, len)'. self cCode: 'sqTextEncoding= uxTextEncoding= uxPathEncoding= uxXWinEncoding= localeEncoding'. ^ encoding. !
Item was changed: + ----- Method: ImmX11Plugin>>primSetPathEnc: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetPathEnc: (in category 'as yet unclassified') ----- primSetPathEnc: encoding
| name len | <export: true> <var: #name type: 'char *'> <var: #len type: 'size_t'> + len := interpreterProxy stSizeOf: encoding. + name := self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. - len _ interpreterProxy stSizeOf: encoding. - name _ self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. self cCode: 'setNEncoding(&uxPathEncoding, name, len)'. ^ encoding.!
Item was changed: + ----- Method: ImmX11Plugin>>primSetPathEncToLocale (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetPathEncToLocale (in category 'as yet unclassified') ----- primSetPathEncToLocale
| ret | <export: true> self primitive: 'primSetPathEncToLocale'. (self cCode: '(int) localeEncoding') ifFalse: [ ret := interpreterProxy falseObject ] ifTrue: [ self cCode: 'uxPathEncoding = (void *)localeEncoding'. ret := interpreterProxy trueObject ]. ^ ret!
Item was changed: + ----- Method: ImmX11Plugin>>primSetTextEnc: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetTextEnc: (in category 'as yet unclassified') ----- primSetTextEnc: encoding
| name len | <export: true> <var: #name type: 'char *'> <var: #len type: 'size_t'> + len := interpreterProxy stSizeOf: encoding. + name := self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. - len _ interpreterProxy stSizeOf: encoding. - name _ self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. self cCode: 'setNEncoding(&uxTextEncoding, name, len)'. ^ encoding.!
Item was changed: + ----- Method: ImmX11Plugin>>primSetTextEncToLocale (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetTextEncToLocale (in category 'as yet unclassified') ----- primSetTextEncToLocale
| ret | <export: true> self primitive: 'primSetTextEncToLocale'. (self cCode: '(int) localeEncoding') ifFalse: [ ret := interpreterProxy falseObject ] ifTrue: [ self cCode: 'uxTextEncoding = (void *)localeEncoding'. ret := interpreterProxy trueObject ]. ^ ret!
Item was changed: + ----- Method: ImmX11Plugin>>primSetTextEncUTF8: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetTextEncUTF8: (in category 'as yet unclassified') ----- primSetTextEncUTF8: bool
<export: true> self primitive: 'primSetTextEncUTF8' parameters: #(Boolean). self cCode: 'textEncodingUTF8 = bool'. ^ bool asOop: Boolean.!
Item was changed: + ----- Method: ImmX11Plugin>>primSetXWinEnc: (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetXWinEnc: (in category 'as yet unclassified') ----- primSetXWinEnc: encoding
| name len | <export: true> <var: #name type: 'char *'> <var: #len type: 'size_t'> + len := interpreterProxy stSizeOf: encoding. + name := self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. - len _ interpreterProxy stSizeOf: encoding. - name _ self cCoerce: (interpreterProxy firstIndexableField: encoding) to: 'char *'. self cCode: 'setNEncoding(&uxXWinEncoding, name, len)'. ^ encoding.!
Item was changed: + ----- Method: ImmX11Plugin>>primSetXWinEncToLocale (in category 'primitives') ----- - ----- Method: ImmX11Plugin>>primSetXWinEncToLocale (in category 'as yet unclassified') ----- primSetXWinEncToLocale
| ret | <export: true> self primitive: 'primSetXWinEncToLocale'. (self cCode: '(int) localeEncoding') ifFalse: [ ret := interpreterProxy falseObject ] ifTrue: [ self cCode: 'uxXWinEncoding = (void *)localeEncoding'. ret := interpreterProxy trueObject ]. ^ ret!
Item was changed: + ----- Method: ImmX11Plugin>>shutdownModule (in category 'initialize-release') ----- - ----- Method: ImmX11Plugin>>shutdownModule (in category 'as yet unclassified') ----- shutdownModule
<export: true> ^ true !
Item was changed: ----- Method: LargeIntegersPlugin>>digitAddLarge:with: (in category 'oop functions') ----- digitAddLarge: firstInteger with: secondInteger "Does not need to normalize!!" | over firstLen secondLen shortInt shortLen longInt longLen sum newSum resClass | <var: #over type: 'unsigned char '> firstLen := self byteSizeOfBytes: firstInteger. secondLen := self byteSizeOfBytes: secondInteger. resClass := interpreterProxy fetchClassOf: firstInteger. firstLen <= secondLen ifTrue: [shortInt := firstInteger. shortLen := firstLen. longInt := secondInteger. longLen := secondLen] ifFalse: [shortInt := secondInteger. shortLen := secondLen. longInt := firstInteger. longLen := firstLen]. " sum := Integer new: len neg: firstInteger negative." self remapOop: #(shortInt longInt ) in: [sum := interpreterProxy instantiateClass: resClass indexableSize: longLen]. over := self cDigitAdd: (interpreterProxy firstIndexableField: shortInt) len: shortLen with: (interpreterProxy firstIndexableField: longInt) len: longLen into: (interpreterProxy firstIndexableField: sum). over > 0 ifTrue: ["sum := sum growby: 1." + self remapOop: sum in: [newSum := interpreterProxy instantiateClass: resClass indexableSize: longLen + 1]. - interpreterProxy remapOop: sum in: [newSum := interpreterProxy instantiateClass: resClass indexableSize: longLen + 1]. self cBytesCopyFrom: (interpreterProxy firstIndexableField: sum) to: (interpreterProxy firstIndexableField: newSum) len: longLen. sum := newSum. "C index!!" (self cCoerce: (interpreterProxy firstIndexableField: sum) to: 'unsigned char *') at: longLen put: over]. ^ sum!
vm-dev@lists.squeakfoundation.org