v8-native-prototype - TurboFan 解码器


BSD
跨平台
C/C++

软件简介

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;
  }
}