[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