Commit 254f3bc4 authored by Rudi Chen's avatar Rudi Chen

Add tb_next attribute to traceback.

parent 4eec398c
...@@ -119,6 +119,13 @@ void BoxedTraceback::here(LineInfo lineInfo, Box** tb) { ...@@ -119,6 +119,13 @@ void BoxedTraceback::here(LineInfo lineInfo, Box** tb) {
*tb = new BoxedTraceback(std::move(lineInfo), *tb); *tb = new BoxedTraceback(std::move(lineInfo), *tb);
} }
static Box* traceback_tb_next(Box* self, void*) {
assert(self->cls == traceback_cls);
BoxedTraceback* traceback = static_cast<BoxedTraceback*>(self);
return traceback->tb_next;
}
void setupTraceback() { void setupTraceback() {
traceback_cls = BoxedClass::create(type_cls, object_cls, BoxedTraceback::gcHandler, 0, 0, sizeof(BoxedTraceback), traceback_cls = BoxedClass::create(type_cls, object_cls, BoxedTraceback::gcHandler, 0, 0, sizeof(BoxedTraceback),
false, "traceback"); false, "traceback");
...@@ -126,6 +133,15 @@ void setupTraceback() { ...@@ -126,6 +133,15 @@ void setupTraceback() {
traceback_cls->giveAttr("getLines", traceback_cls->giveAttr("getLines",
new BoxedFunction(FunctionMetadata::create((void*)BoxedTraceback::getLines, UNKNOWN, 1))); new BoxedFunction(FunctionMetadata::create((void*)BoxedTraceback::getLines, UNKNOWN, 1)));
/*
* Currently not supported.
traceback_cls->giveAttr("tb_frame", new (pyston_getset_cls) BoxedGetsetDescriptor(traceback_tb_frame, NULL, NULL));
traceback_cls->giveAttr("tb_lasti", new (pyston_getset_cls) BoxedGetsetDescriptor(traceback_tb_lasti, NULL, NULL));
traceback_cls->giveAttr("tb_lineno", new (pyston_getset_cls) BoxedGetsetDescriptor(traceback_tb_lineno, NULL,
NULL));
*/
traceback_cls->giveAttr("tb_next", new (pyston_getset_cls) BoxedGetsetDescriptor(traceback_tb_next, NULL, NULL));
traceback_cls->freeze(); traceback_cls->freeze();
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment