ts->listener = cx->runtime->sourceHandler; ts->listenerData = cx->runtime->sourceHandlerData;
js_NewBufferTokenStream(JSContext *cx, const jschar *base, size_t length){    size_t nb;    JSTokenStream *ts;    nb = sizeof(JSTokenStream) + JS_LINE_LIMIT * sizeof(jschar);    PR_ARENA_ALLOCATE(ts, &cx->tempPool, nb);    if (!ts) {	JS_ReportOutOfMemory(cx);	return NULL;    }    memset(ts, 0, nb);    CLEAR_PUSHBACK(ts);    ts->lineno = 1;    ts->linebuf.base = ts->linebuf.limit = ts->linebuf.ptr = (jschar *)(ts + 1);    ts->userbuf.base = (jschar *)base;    ts->userbuf.limit = (jschar *)base + length;    ts->userbuf.ptr = (jschar *)base;#ifdef JSD_LOWLEVEL_SOURCE    ts->jsdc = JSD_JSDContextForJSContext(cx);#endif    return ts;}