HarlonWang / quickjs-wrapper

QuickJS wrapper for Android/JVM

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Eval Script support ESModule check and load

HarlonWang opened this issue · comments

Reference code: in qjs.c

static int eval_file(JSContext *ctx, const char *filename, int module)
{
    uint8_t *buf;
    int ret, eval_flags;
    size_t buf_len;
    
    buf = js_load_file(ctx, &buf_len, filename);
    if (!buf) {
        perror(filename);
        exit(1);
    }

    if (module < 0) {
        module = (has_suffix(filename, ".mjs") ||
                  JS_DetectModule((const char *)buf, buf_len));
    }
    if (module)
        eval_flags = JS_EVAL_TYPE_MODULE;
    else
        eval_flags = JS_EVAL_TYPE_GLOBAL;
    ret = eval_buf(ctx, buf, buf_len, filename, eval_flags);
    js_free(ctx, buf);
    return ret;
}

JS_DetectModule 方法里的 simple_next_token 可能有性能有影响,暂不统一处理