[Vm-dev] VM Maker: VMMaker-dtl.337.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Jan 10 22:23:49 UTC 2014


David T. Lewis uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-dtl.337.mcz

==================== Summary ====================

Name: VMMaker-dtl.337
Author: dtl
Time: 10 January 2014, 5:20:39.805 pm
UUID: 000f5b24-c747-4c6d-ba3e-ac1985565d83
Ancestors: VMMaker-dtl.336

VMMaker 4.12.13
Name: SqueakSSL-Plugin-eem.4
Author: eem
Time: 9 January 2014, 2:24:57.418 pm

Pragmatize the plugin's primitives.

=============== Diff against VMMaker-dtl.336 ===============

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveAccept (in category 'primitives') -----
  primitiveAccept
  	"Primitive. Starts or continues a server handshake using the current session.
  	Will eventually produce output to be sent to the client. Requires the host
  	and cert name to be set for the session. Returns a code indicating the sate
  	of the connection:
  		> 0	 - Number of bytes to be sent to the client.
  		0	 - Success. The connection is established.
  		-1 	 - More input is required.
  		< -1 - Other errors.
  	"
  	| start srcLen dstLen srcOop dstOop handle srcPtr dstPtr result |
+ 	<var: #srcPtr type: 'char *'>
+ 	<var: #dstPtr type: 'char *'>
+ 	<export: true>
- 	self var: #srcPtr type: 'char *'.
- 	self var: #dstPtr type: 'char *'.
- 	self export: true.
  	interpreterProxy methodArgumentCount = 5
  		ifFalse:[^interpreterProxy primitiveFail].
  	dstOop := interpreterProxy stackObjectValue: 0.
  	srcLen := interpreterProxy stackIntegerValue: 1.
  	start := interpreterProxy stackIntegerValue: 2.
  	srcOop := interpreterProxy stackObjectValue: 3.
  	handle := interpreterProxy stackIntegerValue: 4.
  	interpreterProxy failed ifTrue:[^nil].
  	((start > 0 and:[srcLen >= 0])
  		and:[(interpreterProxy isBytes: srcOop) 
  		and:[(interpreterProxy isBytes: dstOop) 
  		and:[(interpreterProxy byteSizeOf: srcOop) >= (start + srcLen - 1)]]])
  			ifFalse:[^interpreterProxy primitiveFail].
  	srcPtr := interpreterProxy firstIndexableField: srcOop.
  	dstPtr := interpreterProxy firstIndexableField: dstOop.
  	srcPtr := srcPtr + start - 1.
  	dstLen := interpreterProxy byteSizeOf: dstOop.
  	result := self cCode: 'sqAcceptSSL(handle, srcPtr, srcLen, dstPtr, dstLen)' 
  					inSmalltalk:[handle. srcPtr. srcLen. dstPtr. dstLen. -2].
  	interpreterProxy failed ifTrue:[^nil].
  	interpreterProxy pop: interpreterProxy methodArgumentCount+1.
  	interpreterProxy pushInteger: result.!

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveConnect (in category 'primitives') -----
  primitiveConnect
  	"Primitive. Starts or continues a client handshake using the provided data.
  	Will eventually produce output to be sent to the server. Requires the host
  	name to be set for the session. 
  	Returns:
  		> 0	 - Number of bytes to be sent to the server
  		0	 - Success. The connection is established.
  		-1 	 - More input is required.
  		< -1 - Other errors.
  	"
  	| start srcLen dstLen srcOop dstOop handle srcPtr dstPtr result |
+ 	<var: #srcPtr type: 'char *'>
+ 	<var: #dstPtr type: 'char *'>
+ 	<export: true>
- 	self var: #srcPtr type: 'char *'.
- 	self var: #dstPtr type: 'char *'.
- 	self export: true.
  	interpreterProxy methodArgumentCount = 5
  		ifFalse:[^interpreterProxy primitiveFail].
  	dstOop := interpreterProxy stackObjectValue: 0.
  	srcLen := interpreterProxy stackIntegerValue: 1.
  	start := interpreterProxy stackIntegerValue: 2.
  	srcOop := interpreterProxy stackObjectValue: 3.
  	handle := interpreterProxy stackIntegerValue: 4.
  	interpreterProxy failed ifTrue:[^nil].
  	((start > 0 and:[srcLen >= 0])
  		and:[(interpreterProxy isBytes: srcOop) 
  		and:[(interpreterProxy isBytes: dstOop) 
  		and:[(interpreterProxy byteSizeOf: srcOop) >= (start + srcLen - 1)]]])
  			ifFalse:[^interpreterProxy primitiveFail].
  	srcPtr := interpreterProxy firstIndexableField: srcOop.
  	dstPtr := interpreterProxy firstIndexableField: dstOop.
  	srcPtr := srcPtr + start - 1.
  	dstLen := interpreterProxy byteSizeOf: dstOop.
  	result := self cCode: 'sqConnectSSL(handle, srcPtr, srcLen, dstPtr, dstLen)' 
  					inSmalltalk:[handle. srcPtr. srcLen. dstPtr. dstLen. -2].
  	interpreterProxy failed ifTrue:[^nil].
  	interpreterProxy pop: interpreterProxy methodArgumentCount+1.
  	interpreterProxy pushInteger: result.!

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveCreate (in category 'primitives') -----
  primitiveCreate
  	"Primitive. Creates a new SSL session and returns its handle."
  	| handle |
+ 	<export: true>
- 	self export: true.
  	interpreterProxy methodArgumentCount = 0 
  		ifFalse:[^interpreterProxy primitiveFail].
  	handle := self cCode: 'sqCreateSSL()' inSmalltalk:[0].
  	handle = 0 ifTrue:[^interpreterProxy primitiveFail].
  	interpreterProxy pop: interpreterProxy methodArgumentCount+1.
  	interpreterProxy pushInteger: handle.
  !

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveDecrypt (in category 'primitives') -----
  primitiveDecrypt
  	"Primitive. Decrypts a buffer sent via the connection.
  	Requires the session to be established.
  	Returns:
  		>=0 - Number of bytes decrypted in the result buffer
  		< -1 - Other errors.
  	"
  	| start srcLen dstLen srcOop dstOop handle srcPtr dstPtr result |
+ 	<var: #srcPtr type: 'char *'>
+ 	<var: #dstPtr type: 'char *'>
+ 	<export: true>
- 	self var: #srcPtr type: 'char *'.
- 	self var: #dstPtr type: 'char *'.
- 	self export: true.
  	interpreterProxy methodArgumentCount = 5
  		ifFalse:[^interpreterProxy primitiveFail].
  	dstOop := interpreterProxy stackObjectValue: 0.
  	srcLen := interpreterProxy stackIntegerValue: 1.
  	start := interpreterProxy stackIntegerValue: 2.
  	srcOop := interpreterProxy stackObjectValue: 3.
  	handle := interpreterProxy stackIntegerValue: 4.
  	interpreterProxy failed ifTrue:[^nil].
  	((start > 0 and:[srcLen >= 0])
  		and:[(interpreterProxy isBytes: srcOop) 
  		and:[(interpreterProxy isBytes: dstOop) 
  		and:[(interpreterProxy byteSizeOf: srcOop) >= (start + srcLen - 1)]]])
  			ifFalse:[^interpreterProxy primitiveFail].
  	srcPtr := interpreterProxy firstIndexableField: srcOop.
  	dstPtr := interpreterProxy firstIndexableField: dstOop.
  	srcPtr := srcPtr + start - 1.
  	dstLen := interpreterProxy byteSizeOf: dstOop.
  	result := self cCode: 'sqDecryptSSL(handle, srcPtr, srcLen, dstPtr, dstLen)' 
  					inSmalltalk:[handle. srcPtr. srcLen. dstPtr. dstLen. -2].
  	interpreterProxy failed ifTrue:[^nil].
  	interpreterProxy pop: interpreterProxy methodArgumentCount+1.
  	interpreterProxy pushInteger: result.!

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveDestroy (in category 'primitives') -----
  primitiveDestroy
  	"Primitive. Destroys an SSL session."
  
  	| handle result |
+ 	<export: true>
- 	self export: true.
  	interpreterProxy methodArgumentCount = 1
  		ifFalse:[^interpreterProxy primitiveFail].
  	handle := interpreterProxy stackIntegerValue: 0.
  	interpreterProxy failed ifTrue:[^nil].
  	result := self cCode: 'sqDestroySSL(handle)' inSmalltalk:[handle. 0].
  	result = 0 ifTrue:[^interpreterProxy primitiveFail].
  	interpreterProxy pop: interpreterProxy methodArgumentCount.
  
  !

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveEncrypt (in category 'primitives') -----
  primitiveEncrypt
  	"Primitive. Encrypts a buffer to be sent to the via the connection.
  	Requires the session to be established.
  	Returns:
  		>=0 - Number of bytes encrypted in the result buffer
  		< -1 - Other errors.
  	"
  	| start srcLen dstLen srcOop dstOop handle srcPtr dstPtr result |
+ 	<var: #srcPtr type: 'char *'>
+ 	<var: #dstPtr type: 'char *'>
+ 	<export: true>
- 	self var: #srcPtr type: 'char *'.
- 	self var: #dstPtr type: 'char *'.
- 	self export: true.
  	interpreterProxy methodArgumentCount = 5
  		ifFalse:[^interpreterProxy primitiveFail].
  	dstOop := interpreterProxy stackObjectValue: 0.
  	srcLen := interpreterProxy stackIntegerValue: 1.
  	start := interpreterProxy stackIntegerValue: 2.
  	srcOop := interpreterProxy stackObjectValue: 3.
  	handle := interpreterProxy stackIntegerValue: 4.
  	interpreterProxy failed ifTrue:[^nil].
  	((start > 0 and:[srcLen >= 0])
  		and:[(interpreterProxy isBytes: srcOop) 
  		and:[(interpreterProxy isBytes: dstOop) 
  		and:[(interpreterProxy byteSizeOf: srcOop) >= (start + srcLen - 1)]]])
  			ifFalse:[^interpreterProxy primitiveFail].
  	srcPtr := interpreterProxy firstIndexableField: srcOop.
  	dstPtr := interpreterProxy firstIndexableField: dstOop.
  	srcPtr := srcPtr + start - 1.
  	dstLen := interpreterProxy byteSizeOf: dstOop.
  	result := self cCode: 'sqEncryptSSL(handle, srcPtr, srcLen, dstPtr, dstLen)' 
  					inSmalltalk:[handle. srcPtr. srcLen. dstPtr. dstLen. -2].
  	interpreterProxy failed ifTrue:[^nil].
  	interpreterProxy pop: interpreterProxy methodArgumentCount+1.
  	interpreterProxy pushInteger: result.!

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveGetIntProperty (in category 'primitives') -----
  primitiveGetIntProperty
  	"Primitive. Returns an integer property for the session"
  
  	| propID handle value |
+ 	<export: true>
- 	self export: true.
  	interpreterProxy methodArgumentCount = 2
  		ifFalse:[^interpreterProxy primitiveFail].
  	propID := interpreterProxy stackIntegerValue: 0.
  	handle := interpreterProxy stackIntegerValue: 1.
  	interpreterProxy failed ifTrue:[^nil].
  	value := self cCode: 'sqGetIntPropertySSL(handle, propID)' 
  					inSmalltalk:[handle. propID. 0].
  	interpreterProxy failed ifTrue:[^nil].
  	interpreterProxy 
  		pop: interpreterProxy methodArgumentCount + 1
  		thenPush: (interpreterProxy signed32BitIntegerFor: value)
  !

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveGetStringProperty (in category 'primitives') -----
  primitiveGetStringProperty
  	"Primitive. Returns a string property for the session"
  
  	| stringLen stringOop propID handle stringPtr oopPtr |
+ 	<var: #stringPtr type: 'char *'>
+ 	<var: #oopPtr type: 'char *'>
+ 	<export: true>
- 	self var: #stringPtr type: 'char *'.
- 	self var: #oopPtr type: 'char *'.
- 	self export: true.
  	interpreterProxy methodArgumentCount = 2
  		ifFalse:[^interpreterProxy primitiveFail].
  	propID := interpreterProxy stackIntegerValue: 0.
  	handle := interpreterProxy stackIntegerValue: 1.
  	interpreterProxy failed ifTrue:[^nil].
  	stringPtr := self cCode: 'sqGetStringPropertySSL(handle, propID)' 
  					inSmalltalk:[handle. propID. nil].
  	interpreterProxy failed ifTrue:[^nil].
  	stringPtr == nil ifTrue:[
  		stringOop := interpreterProxy nilObject.
  	] ifFalse:[
  		stringLen := self strlen: stringPtr.
  		stringOop := interpreterProxy 
  			instantiateClass: (interpreterProxy classString)
  			indexableSize: stringLen.
  		oopPtr := interpreterProxy firstIndexableField: stringOop.
  		0 to: stringLen-1 do:[:i| oopPtr at: i put: (stringPtr at: i)].
  	].
  	interpreterProxy 
  		pop: interpreterProxy methodArgumentCount + 1
  		thenPush: stringOop.
  !

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveSetIntProperty (in category 'primitives') -----
  primitiveSetIntProperty
  	"Primitive. Sets a integer property for the session"
  
  	| propID handle result value |
+ 	<export: true>
- 	self export: true.
  	interpreterProxy methodArgumentCount = 3
  		ifFalse:[^interpreterProxy primitiveFail].
  	value := interpreterProxy signed32BitValueOf: (interpreterProxy stackValue: 0).
  	propID := interpreterProxy stackIntegerValue: 1.
  	handle := interpreterProxy stackIntegerValue: 2.
  	interpreterProxy failed ifTrue:[^nil].
  	result := self cCode: 'sqSetIntPropertySSL(handle, propID, value)' 
  					inSmalltalk:[handle. propID. value. false].
  	result ifFalse:[^interpreterProxy primitiveFail].
  	interpreterProxy failed ifTrue:[^nil].
  	interpreterProxy pop: interpreterProxy methodArgumentCount.
  !

Item was changed:
  ----- Method: SqueakSSLPlugin>>primitiveSetStringProperty (in category 'primitives') -----
  primitiveSetStringProperty
  	"Primitive. Sets a string property for the session"
  
  	| srcLen srcOop propID handle srcPtr result |
+ 	<var: #srcPtr type: 'char *'>
+ 	<export: true>
- 	self var: #srcPtr type: 'char *'.
- 	self export: true.
  	interpreterProxy methodArgumentCount = 3
  		ifFalse:[^interpreterProxy primitiveFail].
  	srcOop := interpreterProxy stackObjectValue: 0.
  	propID := interpreterProxy stackIntegerValue: 1.
  	handle := interpreterProxy stackIntegerValue: 2.
  	interpreterProxy failed ifTrue:[^nil].
  	(interpreterProxy isBytes: srcOop) 
  		ifFalse:[^interpreterProxy primitiveFail].
  	srcPtr := interpreterProxy firstIndexableField: srcOop.
  	srcLen := interpreterProxy byteSizeOf: srcOop.
  	result := self cCode: 'sqSetStringPropertySSL(handle, propID, srcPtr, srcLen)' 
  					inSmalltalk:[handle. srcPtr. propID. srcLen. false].
  	result ifFalse:[^interpreterProxy primitiveFail].
  	interpreterProxy failed ifTrue:[^nil].
  	interpreterProxy pop: interpreterProxy methodArgumentCount.
  !

Item was changed:
  ----- Method: VMMaker class>>versionString (in category 'version testing') -----
  versionString
  
  	"VMMaker versionString"
  
+ 	^'4.12.13'!
- 	^'4.12.12'!



More information about the Vm-dev mailing list