[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