[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