DLL call in Smalltalk

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

DLL call in Smalltalk

Gaurav Sharma
Hi,
I was going through the smalltalk code and found something a bit strange, look below -
 
"<primitive: VMprBlockContextValueOnReturnDo>"
 
I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
 
Can anyone help me with this? maybe redirect me to the correct doc
 
Thanks

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: DLL call in Smalltalk

Marten Feldtmann-2

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: DLL call in Smalltalk

John O'Keefe-3
Marten is exactly correct, but I will add a little additional information.
 
If the external function is located in a DLL/shared object other than the VM, then the name of the DLL/shared object will be specified (i.e. <primitive: Foo:Entry-point name>; if it is the VM, only the Entry-point name is specified (as in your example).
 
You may also find constructs that look like <c: Foo:Entry-point name> and wonder how these are different from primitives.  The implementation of <primitive: ...> takes Smalltalk objects as parameters and return a Smalltalk object as the result; the implementation of <c: ...> takes normal C parameters and answers a normal C result.
 
You can find a lot more detail on the subject at VA Smalltalk Virtual Machine API.

On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.


On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.


On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/PTLpPIZorE0J.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: DLL call in Smalltalk

Gaurav Sharma
Thanks John for the additional info, this is exactly what i was looking for...

On Wednesday, February 29, 2012 10:53:11 PM UTC+5:30, John O'Keefe wrote:
Marten is exactly correct, but I will add a little additional information.
 
If the external function is located in a DLL/shared object other than the VM, then the name of the DLL/shared object will be specified (i.e. <primitive: Foo:Entry-point name>; if it is the VM, only the Entry-point name is specified (as in your example).
 
You may also find constructs that look like <c: Foo:Entry-point name> and wonder how these are different from primitives.  The implementation of <primitive: ...> takes Smalltalk objects as parameters and return a Smalltalk object as the result; the implementation of <c: ...> takes normal C parameters and answers a normal C result.
 
You can find a lot more detail on the subject at VA Smalltalk Virtual Machine API.

On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.


On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.


On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.


On Wednesday, February 29, 2012 10:53:11 PM UTC+5:30, John O'Keefe wrote:
Marten is exactly correct, but I will add a little additional information.
 
If the external function is located in a DLL/shared object other than the VM, then the name of the DLL/shared object will be specified (i.e. <primitive: Foo:Entry-point name>; if it is the VM, only the Entry-point name is specified (as in your example).
 
You may also find constructs that look like <c: Foo:Entry-point name> and wonder how these are different from primitives.  The implementation of <primitive: ...> takes Smalltalk objects as parameters and return a Smalltalk object as the result; the implementation of <c: ...> takes normal C parameters and answers a normal C result.
 
You can find a lot more detail on the subject at VA Smalltalk Virtual Machine API.

On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.


On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.


On Wednesday, February 29, 2012 9:35:48 AM UTC-5, Marten Feldtmann wrote:

A primitive is a very special call to a native external library code.

After all its an exported external function from a shared library therefore you might look at the exported functions of some of the dlls delivered with VASmalltalk.

In this example perhaps the dll containing the virtual machine.

Am 29.02.2012 15:01 schrieb "Gaurav Sharma" <[hidden email]>:
>
> Hi,
> I was going through the smalltalk code and found something a bit strange, look below -
>  
> "<primitive: VMprBlockContextValueOnReturnDo>"
>  
> I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
> What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
>  
> Can anyone help me with this? maybe redirect me to the correct doc
>  
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/KZHTfbonh_4J.
> To post to this group, send email to [hidden email].
> To unsubscribe from this group, send email to [hidden email].
> For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/q11chcCNOXIJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: DLL call in Smalltalk

Gaurav Sharma
In reply to this post by Gaurav Sharma
Thanks John for the additional info, this is exactly what i was looking for... 

On Wednesday, February 29, 2012 7:31:26 PM UTC+5:30, Gaurav Sharma wrote:
Hi,
I was going through the smalltalk code and found something a bit strange, look below -
 
"<primitive: VMprBlockContextValueOnReturnDo>"
 
I check the code and VMprBlockContextValueOnReturnDo returned a value of 181 on inspecting but could not find anything by the name primitive: aString.
What I could grasp was that this is a call to some DLL but how is the call happening and which DLL is it calling was something I could not trace.
 
Can anyone help me with this? maybe redirect me to the correct doc
 
Thanks

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/IyAq3twopSQJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: DLL call in Smalltalk

Marten Feldtmann-2
You may view the screencasts I've done about this topic:


http://smalltalkinspect.podspot.de/post/msc010-vasmalltalk-c-api-part-07-en/

http://smalltalkinspect.podspot.de/post/msc009-c-api-08m4v-en/

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/dDKaBbUyg7wJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.