There seems to be no relation between ObjectHeaders and Objects. Presumably obj_table should be an array of Objects, not of ObjectHeader? If so, where are you storing the sum tag to distinguish the different cases for Objects?

Sandro

On 27/02/2015 8:55 AM, Keean Schupke wrote:
data ObjectHeader = ObjectHeader {
    id :: UInt64

data Capability = Capability {
    id :: UInt65,
    facet :: UInt16
}

data Process = Process {ObjectHeader | cap_node :: ArrayN Capacity 32}
data Objects = P Process | N Node ...

data Global {
    obj_table :: ArrayN ObjectHeader Size,
    running :: Process
}

kernel_msg_send cap_idx msg = let cap = global.running.cap_node[cap_idx] in
    let obj = lookup(global.obj_table, cap.id) in case obj of
        (P process) -> ...
        (N node) -> ...


Keean.



_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev



_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to