v8-native-prototypeTurboFan 解码器
v8-native-prototype 是用于 TurboFan 的原型本地解码器。
示例代码:
void TestWasmDecodingSpeed() {
byte code[] = {kStmtSetLocal, 0, kExprInt32Add, kExprGetLocal, 0,
kExprInt8Const, 5};
Zone zone;
LR_WasmDecoder decoder(&zone, nullptr);
FunctionSig::Builder builder(&zone, 1, 1);
builder.AddReturn(kAstInt32);
builder.AddParam(kAstInt32);
FunctionEnv env = {nullptr, builder.Build(), 0, 0, 0, 0};
// Make COUNT copies of the above code.
const int TRIALS = 10;
const int COUNT = (4 * 1024) / sizeof(code);
const int TOTAL = COUNT * sizeof(code);
byte* big_code = reinterpret_cast<byte*>(zone.New(TOTAL));
for (int i = 0; i < COUNT; i++) {
memcpy(big_code + i * sizeof(code), code, sizeof(code));
}
for (int i = 0; i < TRIALS; i++) {
base::ElapsedTimer timer;
timer.Start();
Result result = decoder.Decode(&env, big_code, big_code + TOTAL);
int64_t us = timer.Elapsed().InMicroseconds();
OFStream os(stdout);
double rate = ((TOTAL * 1000000.0) / us) / 1048576;
os << result << TOTAL << " bytes, us: " << us << " (" << rate << " MB/sec)"
<< std::endl;
}
}评论
