[Vm-dev] VM Maker: VMMaker-eem.291.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Dec 11 21:28:24 UTC 2012
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!
More information about the Vm-dev
mailing list