VM Maker: VMMaker-oscog-EstebanLorenzano.160.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker-oscog-EstebanLorenzano.160.mcz

commits-2
 
Esteban Lorenzano uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-oscog-EstebanLorenzano.160.mcz

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

Name: VMMaker-oscog-EstebanLorenzano.160
Author: EstebanLorenzano
Time: 30 May 2012, 3:58:23.003 pm
UUID: bec8cdf0-4e06-4975-8c02-e882fadf4df3
Ancestors: VMMaker-oscog-DamienCassou.159

SocketPlugin with primitives for ipv6

=============== Diff against VMMaker-oscog-EstebanLorenzano.158 ===============

Item was changed:
  ----- Method: SocketPlugin>>primitiveHasSocketAccess (in category 'security primitives') -----
  primitiveHasSocketAccess
+ |  hasAccess |
- | hasAccess |
  <export: true>
  "If the security plugin can be loaded, use it to check .
+ If not, assume it's ok"
+ sHSAfn ~= 0
+ ifTrue: [hasAccess := self cCode: ' ((int (*) (void)) sHSAfn)()' inSmalltalk:[true]]
+ ifFalse: [hasAccess := true].
- If not, assume it's ok"
- hasAccess := sHSAfn = 0
- or: [self cCode: ' ((int (*) (void)) sHSAfn)()' inSmalltalk:[true]].
  interpreterProxy pop: 1.
  interpreterProxy pushBool: hasAccess!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetAddressInfoFamily (in category 'ipv6 primitives') -----
+ primitiveResolverGetAddressInfoFamily
+
+ | family |
+ self primitive: 'primitiveResolverGetAddressInfoFamily'
+ parameters: #().
+ interpreterProxy failed
+ ifFalse:
+ [family := self sqResolverGetAddressInfoFamily.
+ ^family asSmallIntegerObj]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetAddressInfoHost:service:flags:family:type:protocol: (in category 'ipv6 primitives') -----
+ primitiveResolverGetAddressInfoHost: hostName service: servName flags: flags family: family type: type protocol: protocol
+
+ | hostSize servSize |
+ self primitive: 'primitiveResolverGetAddressInfo'
+ parameters: #(String String SmallInteger SmallInteger SmallInteger SmallInteger).
+ interpreterProxy failed
+ ifFalse:
+ [hostSize := interpreterProxy byteSizeOf: hostName cPtrAsOop.
+ servSize := interpreterProxy byteSizeOf: servName cPtrAsOop.
+ self
+ sqResolverGetAddressInfoHost: hostName Size: hostSize Service: servName Size: servSize
+ Flags: flags Family: family Type: type Protocol: protocol]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetAddressInfoNext (in category 'ipv6 primitives') -----
+ primitiveResolverGetAddressInfoNext
+
+ | more |
+ self primitive: 'primitiveResolverGetAddressInfoNext'
+ parameters: #().
+ more := self sqResolverGetAddressInfoNext.
+ interpreterProxy failed ifTrue: [^nil].
+ ^more asBooleanObj!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetAddressInfoProtocol (in category 'ipv6 primitives') -----
+ primitiveResolverGetAddressInfoProtocol
+
+ | protocol |
+ self primitive: 'primitiveResolverGetAddressInfoProtocol'
+ parameters: #().
+ interpreterProxy failed
+ ifFalse:
+ [protocol := self sqResolverGetAddressInfoProtocol.
+ ^protocol asSmallIntegerObj]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetAddressInfoResult: (in category 'ipv6 primitives') -----
+ primitiveResolverGetAddressInfoResult: socketAddress
+
+ | addrSize |
+ self primitive: 'primitiveResolverGetAddressInfoResult'
+ parameters: #(ByteArray).
+ interpreterProxy failed
+ ifFalse:
+ [addrSize := interpreterProxy byteSizeOf: socketAddress cPtrAsOop.
+ self sqResolverGetAddressInfoResult: socketAddress Size: addrSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetAddressInfoSize (in category 'ipv6 primitives') -----
+ primitiveResolverGetAddressInfoSize
+
+ | size |
+ self primitive: 'primitiveResolverGetAddressInfoSize'
+ parameters: #().
+ interpreterProxy failed
+ ifFalse:
+ [size := self sqResolverGetAddressInfoSize.
+ ^size asSmallIntegerObj]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetAddressInfoType (in category 'ipv6 primitives') -----
+ primitiveResolverGetAddressInfoType
+
+ | type |
+ self primitive: 'primitiveResolverGetAddressInfoType'
+ parameters: #().
+ interpreterProxy failed
+ ifFalse:
+ [type := self sqResolverGetAddressInfoType.
+ ^type asSmallIntegerObj]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetNameInfo:flags: (in category 'ipv6 primitives') -----
+ primitiveResolverGetNameInfo: socketAddress flags: flags
+
+ | addrSize addrBase |
+ <var: #addrBase type: 'char *'>
+ self primitive: 'primitiveResolverGetNameInfo'
+ parameters: #(Oop SmallInteger).
+ interpreterProxy failed
+ ifFalse:
+ [addrSize := interpreterProxy byteSizeOf: socketAddress.
+ addrBase := self cCoerce: (interpreterProxy firstIndexableField: socketAddress) to: 'char *'.
+ self sqResolverGetNameInfo: addrBase Size: addrSize Flags: flags]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetNameInfoHostResult: (in category 'ipv6 primitives') -----
+ primitiveResolverGetNameInfoHostResult: socketName
+
+ | addrSize |
+ self primitive: 'primitiveResolverGetNameInfoHostResult'
+ parameters: #(String).
+ interpreterProxy failed
+ ifFalse:
+ [addrSize := interpreterProxy byteSizeOf: socketName cPtrAsOop.
+ self sqResolverGetNameInfoHostResult: socketName Size: addrSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetNameInfoHostSize (in category 'ipv6 primitives') -----
+ primitiveResolverGetNameInfoHostSize
+
+ | size |
+ self primitive: 'primitiveResolverGetNameInfoHostSize'
+ parameters: #().
+ interpreterProxy failed
+ ifFalse:
+ [size := self sqResolverGetNameInfoHostSize.
+ ^size asSmallIntegerObj]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetNameInfoServiceResult: (in category 'ipv6 primitives') -----
+ primitiveResolverGetNameInfoServiceResult: socketName
+
+ | addrSize |
+ self primitive: 'primitiveResolverGetNameInfoServiceResult'
+ parameters: #(String).
+ interpreterProxy failed
+ ifFalse:
+ [addrSize := interpreterProxy byteSizeOf: socketName cPtrAsOop.
+ self sqResolverGetNameInfoServiceResult: socketName Size: addrSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverGetNameInfoServiceSize (in category 'ipv6 primitives') -----
+ primitiveResolverGetNameInfoServiceSize
+
+ | size |
+ self primitive: 'primitiveResolverGetNameInfoServiceSize'
+ parameters: #().
+ interpreterProxy failed
+ ifFalse:
+ [size := self sqResolverGetNameInfoServiceSize.
+ ^size asSmallIntegerObj]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverHostNameResult: (in category 'ipv6 primitives') -----
+ primitiveResolverHostNameResult: nameString
+
+ | nameSize |
+ self primitive: 'primitiveResolverHostNameResult'
+ parameters: #(String).
+ interpreterProxy failed
+ ifFalse:
+ [nameSize := interpreterProxy byteSizeOf: nameString cPtrAsOop.
+ self sqResolverHostNameResult: nameString Size: nameSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveResolverHostNameSize (in category 'ipv6 primitives') -----
+ primitiveResolverHostNameSize
+
+ | size |
+ self primitive: 'primitiveResolverHostNameSize'
+ parameters: #().
+ interpreterProxy failed
+ ifFalse:
+ [size := self sqResolverHostNameSize.
+ interpreterProxy failed ifFalse: [^size asSmallIntegerObj]]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocket:bindTo: (in category 'ipv6 primitives') -----
+ primitiveSocket: socket bindTo: socketAddress
+
+ | addrSize addrBase s  |
+ <var: #addrBase type: 'char *'>
+ <var: #s type: 'SocketPtr'>
+ self primitive: 'primitiveSocketBindTo' parameters: #(#Oop #Oop).
+ s := self socketValueOf: socket.
+ addrSize := interpreterProxy byteSizeOf: socketAddress.
+ addrBase := self cCoerce: (interpreterProxy firstIndexableField: socketAddress) to: 'char *'.
+ interpreterProxy failed ifFalse: [self sqSocket: s BindToAddress: addrBase Size: addrSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocket:connectTo: (in category 'ipv6 primitives') -----
+ primitiveSocket: socket connectTo: socketAddress
+
+ | addrSize addrBase s  |
+ <var: #addrBase type: 'char *'>
+ <var: #s type: 'SocketPtr'>
+ self primitive: 'primitiveSocketConnectTo' parameters: #(#Oop #Oop).
+ s := self socketValueOf: socket.
+ addrSize := interpreterProxy byteSizeOf: socketAddress.
+ addrBase := self cCoerce: (interpreterProxy firstIndexableField: socketAddress) to: 'char *'.
+ interpreterProxy failed ifFalse: [self sqSocket: s ConnectToAddress: addrBase Size: addrSize]!

Item was changed:
  ----- Method: SocketPlugin>>primitiveSocket:listenOnPort: (in category 'primitives') -----
  primitiveSocket: socket listenOnPort: port
  "one part of the wierdass dual prim primitiveSocketListenOnPort which
  was warped by some demented evil person determined to twist the very
  nature of reality"
  | s  okToListen |
  <var: #s type: 'SocketPtr '>
  self primitive: 'primitiveSocketListenOnPort' parameters: #(#Oop #SmallInteger ).
  s := self socketValueOf: socket.
  "If the security plugin can be loaded, use it to check for permission.
  If  not, assume it's ok"
  sCCLOPfn ~= 0
  ifTrue: [okToListen := self cCode: ' ((int (*) (SocketPtr, int)) sCCLOPfn)(s, port)'.
  okToListen
  ifFalse: [^ interpreterProxy primitiveFail]].
+ interpreterProxy failed ifFalse:[self sqSocket: s ListenOnPort: port]!
- self sqSocket: s ListenOnPort: port!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocket:listenWithBacklog: (in category 'ipv6 primitives') -----
+ primitiveSocket: socket listenWithBacklog: backlogSize
+
+ | s  |
+ <var: #s type: 'SocketPtr'>
+ self primitive: 'primitiveSocketListenWithBacklog' parameters: #(#Oop #SmallInteger).
+ s := self socketValueOf: socket.
+ interpreterProxy failed ifFalse: [self sqSocket: s ListenBacklog: backlogSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocket:localAddressResult: (in category 'ipv6 primitives') -----
+ primitiveSocket: socket localAddressResult: socketAddress
+
+ | addrSize addrBase s  |
+ <var: #addrBase type: 'char *'>
+ <var: #s type: 'SocketPtr'>
+ self primitive: 'primitiveSocketLocalAddressResult' parameters: #(#Oop #Oop).
+ s := self socketValueOf: socket.
+ addrSize := interpreterProxy byteSizeOf: socketAddress.
+ addrBase := self cCoerce: (interpreterProxy firstIndexableField: socketAddress) to: 'char *'.
+ interpreterProxy failed ifFalse: [self sqSocket: s LocalAddressResult: addrBase Size: addrSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocket:remoteAddressResult: (in category 'ipv6 primitives') -----
+ primitiveSocket: socket remoteAddressResult: socketAddress
+
+ | addrSize addrBase s  |
+ <var: #addrBase type: 'char *'>
+ <var: #s type: 'SocketPtr'>
+ self primitive: 'primitiveSocketRemoteAddressResult' parameters: #(#Oop #Oop).
+ s := self socketValueOf: socket.
+ addrSize := interpreterProxy byteSizeOf: socketAddress.
+ addrBase := self cCoerce: (interpreterProxy firstIndexableField: socketAddress) to: 'char *'.
+ interpreterProxy failed ifFalse: [self sqSocket: s RemoteAddressResult: addrBase Size: addrSize]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocketAddressGetPort (in category 'ipv6 primitives') -----
+ primitiveSocketAddressGetPort
+
+ | addr addrSize addrBase port |
+ <var: #addrBase type: 'char *'>
+ addr := self primitive: 'primitiveSocketAddressGetPort' parameters: #() receiver: #Oop.
+ addrSize := interpreterProxy byteSizeOf: addr.
+ addrBase := self cCoerce: (interpreterProxy firstIndexableField: addr) to: 'char *'.
+ interpreterProxy failed
+ ifFalse:
+ [port := self sqSocketAddress: addrBase SizeGetPort: addrSize.
+ interpreterProxy failed ifFalse: [^port asSmallIntegerObj]]!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocketAddressSetPort: (in category 'ipv6 primitives') -----
+ primitiveSocketAddressSetPort: portNumber
+
+ | addr addrSize addrBase |
+ <var: #addrBase type: 'char *'>
+ addr := self primitive: 'primitiveSocketAddressSetPort' parameters: #(SmallInteger) receiver: #Oop.
+ addrSize := interpreterProxy byteSizeOf: addr.
+ addrBase := self cCoerce: (interpreterProxy firstIndexableField: addr) to: 'char *'.
+ interpreterProxy failed ifFalse: [self sqSocketAddress: addrBase Size: addrSize SetPort: portNumber]!

Item was changed:
  ----- Method: SocketPlugin>>primitiveSocketCreateRaw:type:receiveBufferSize:sendBufSize:semaIndex:readSemaIndex:writeSemaIndex: (in category 'primitives') -----
  primitiveSocketCreateRaw: netType type: protoType receiveBufferSize: recvBufSize sendBufSize: sendBufSize semaIndex: semaIndex readSemaIndex: aReadSema writeSemaIndex: aWriteSema
+ "New IPV6 implementation removes this... and nobody is using (and it wont compile)"
+ <doNotGenerate>
  | socketOop s okToCreate |
  <var: #s type: 'SocketPtr '>
  self primitive: 'primitiveSocketCreateRAW' parameters: #(#SmallInteger #SmallInteger #SmallInteger #SmallInteger #SmallInteger #SmallInteger #SmallInteger ).
  "If the security plugin can be loaded, use it to check for permission.
  If not, assume it's ok"
  sCCSOTfn ~= 0
  ifTrue: [okToCreate := self cCode: ' ((int (*) (int, int)) sCCSOTfn)(netType, protoType)'.
  okToCreate
  ifFalse: [^ interpreterProxy primitiveFail]].
  socketOop := interpreterProxy instantiateClass: interpreterProxy classByteArray indexableSize: self socketRecordSize.
  s := self socketValueOf: socketOop.
  self
  sqSocket: s
  CreateRaw: netType
  ProtoType: protoType
  RecvBytes: recvBufSize
  SendBytes: sendBufSize
  SemaID: semaIndex
  ReadSemaID: aReadSema
  WriteSemaID: aWriteSema.
  ^ socketOop!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocketLocalAddressSize: (in category 'ipv6 primitives') -----
+ primitiveSocketLocalAddressSize: socket
+
+ | s size |
+ <var: #s type: 'SocketPtr'>
+ self primitive: 'primitiveSocketLocalAddressSize' parameters: #(#Oop).
+ s := self socketValueOf: socket.
+ interpreterProxy failed ifTrue: [^nil].
+ size := self sqSocketLocalAddressSize: s.
+ interpreterProxy failed ifTrue: [^nil].
+ ^size asSmallIntegerObj!

Item was added:
+ ----- Method: SocketPlugin>>primitiveSocketRemoteAddressSize: (in category 'ipv6 primitives') -----
+ primitiveSocketRemoteAddressSize: socket
+
+ | s size |
+ <var: #s type: 'SocketPtr'>
+ self primitive: 'primitiveSocketRemoteAddressSize' parameters: #(#Oop).
+ s := self socketValueOf: socket.
+ interpreterProxy failed ifTrue: [^nil].
+ size := self sqSocketRemoteAddressSize: s.
+ interpreterProxy failed ifTrue: [^nil].
+ ^size asSmallIntegerObj!