[Vm-dev] VM Maker: VMMaker.oscog-eem.1882.mcz

Eliot Miranda eliot.miranda at gmail.com
Tue Jun 7 16:07:04 UTC 2016


Hi Ben,

> On Jun 7, 2016, at 3:14 AM, Ben Coman <btc at openinworld.com> wrote:
> 
> 
>> On Tue, Jun 7, 2016 at 9:07 AM,  <commits at source.squeak.org> wrote:
>> 
>> Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
>> http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1882.mcz
>> 
>> ==================== Summary ====================
>> 
>> Name: VMMaker.oscog-eem.1882
>> Author: eem
>> Time: 6 June 2016, 6:06:00.077553 pm
>> UUID: 103fa521-565d-4a73-8a04-b2d3276217c8
>> Ancestors: VMMaker.oscog-eem.1881
>> 
>> ceCheckAndMaybeRetryPrimitive: must be marked <api>
> 
> What is the api?  

The interface between the CoInterpreter and the Cogit.  The original VMMaker produced the entire core VM in one file, interp.c.  I wanted to separate the core VM from the JIT, so modified VMMaker.oscog to produce cointerp.c cogit.c cointerp.h cogit.h and cogmethod.h.  The <api> pragma marks methods that should be included in either cointerp.h  or cogit.h.

> i.e. what is appplication / who is its user ?

The CoInterpreter needs to ask the Cogit to JIT methods (cog:selector:) and to flush caches, run GC passes over machine code, map machine code pcs to bytecode pcs etc.  The Cogit needs to decode methods, find the addresses of important variables, find out information on primitives (does a primitive call back, does a primitive need newMethod setting) call run-time code to look up methods, etc.

> Is there some way to find/generate a full list of api methods

The lists are in *src/vm/{cointerp.h,cogit.h}.  Also
    self systemNavigation browseAllSelect:
          [:m| (m pragmaAt: #api) notNil]

(& maybe check for #api: too?)

> 
> cheers -ben


_,,,^..^,,,_ (phone)


More information about the Vm-dev mailing list