Google Summer of Code 2013/cs648/Initial Meeting

From QEMU
Revision as of 17:23, 18 June 2013 by Cs648 (talk | contribs) (Created page with 'cps is analogous to coroutine_fn cps is infact a GCC function attribute - __attribute__((cps)) A good first task is to check the annotations in the QEMU tree are correct as the…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

cps is analogous to coroutine_fn

cps is infact a GCC function attribute - __attribute__((cps))

A good first task is to check the annotations in the QEMU tree are correct as they are currently untested

Need to understand distinctions between packed/unpacked mode (also ecpc)

Suggest will take a week to read and understand the workings of cpc_runtime: - needs a blogpost to explain it as documentation once understood - any bugs/optimisations noticed should be submitted as (separate patches)

A good place to start is to examine the different stages of CPC translation (accessed with -stageX option) Best test compilation is cpc/samples/loops.cpc

May turn out that coroutine_io.c is entirely built on coroutine.h primitives and therefore will not need editing for CPC variant.

Need to read and reimplement: - cpc_sleep - cpc_spawn (not annotated with cps) - cpc_yield - cpc_invoke/call

Don't need cpc_main loop

Extensions

Good extension is to skip translation if no cps functions, compile as C Need to benchmark result extensively, is important for understanding different "calling conventions" -ecpc mode and packed vs unpacked


Aim by Friday 21st is to produce a blog post documenting CPC memory format and how functions manipulate it "anatomy of a continuation" - Define a CPC continuation as a datastructure - how it works in practise - detail cpc_push/cpc_invoke (also cpc-yield, cpc_spawn, cpc_patch)