v8-ative-prototype是用于TurboFa的原型本地解码器。
示例代码:
void TestWasmDecodigSpeed() { byte code[] = {kStmtSetLocal, 0, kExprIt32Add, kExprGetLocal, 0, kExprIt8Cost, 5}; Zoe zoe; LR_WasmDecoder decoder(&zoe, ullptr); FuctioSig::Builder builder(&zoe, 1, 1); builder.AddRetur(kAstIt32); builder.AddParam(kAstIt32); FuctioEv ev = {ullptr, builder.Build(), 0, 0, 0, 0}; // Make COUNT copies of the above code. cost it TRIALS = 10; cost it COUNT = (4 * 1024) / sizeof(code); cost it TOTAL = COUNT * sizeof(code); byte* big_code = reiterpret_cast<byte*>(zoe.New(TOTAL)); for (it i = 0; i < COUNT; i++) { memcpy(big_code + i * sizeof(code), code, sizeof(code)); } for (it i = 0; i < TRIALS; i++) { base::ElapsedTimer timer; timer.Start(); Result result = decoder.Decode(&ev, big_code, big_code + TOTAL); it64_t us = timer.Elapsed().IMicrosecods(); OFStream os(stdout); double rate = ((TOTAL * 1000000.0) / us) / 1048576; os << result << TOTAL << " bytes, us: " << us << " (" << rate << " MB/sec)" << std::edl; }}









评论