[e-lang] PBC arrives as broken reference, maybe caused by CapTP?

Martin Scheffler martinscheffler at googlemail.com
Thu Jan 11 10:18:30 CST 2007


When Objects implementing Pass By Construction are passed between
vats, they arrive as broken references.
This testcase fails with "__getAllegedType not synchronously callable"
when obj2 is passed to the new vat.

# in de.flowdev.makeTestObj.emaker
def makeTestObj implements pbc{

    to __optUncall() :any {
                return [<import>, "get", ["de.flowdev.makeTestObj"]]
    }

        to run() :any {

                def testObj implements pbc{
                        to __optUncall() :any {
                                return [makeTestObj, "run", []]
                        }
                }
                return testObj
        }
}
#---------------------8<------------------------------
pragma.syntax("0.9")

def  vsv := <elang:interp.seedVatAuthor>(<unsafe>).virtualize((introducer.onTheAir();
introducer))

def othersrc:="
    def tester{
        to testPrint() :void {println(\"Tester is alive\")}
        to print(other) :void {println(`Tester got object:
${other.__getAllegedType()}`)}
    }
    tester
"
def [tester, vat] := vsv(othersrc)


def obj1 implements pbc {
        to __optUncall() :any {
                println("UNCALLING Obj 1")
                return [<elib:tables.makeFlexList>, "make", []]
        }
}
def obj2 := <import:de.flowdev.makeTestObj>()

interp.waitAtTop(tester <- testPrint())
interp.waitAtTop(tester <- print(obj1))
interp.waitAtTop(tester <- print(obj2))


More information about the e-lang mailing list