Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Unified Diff: src/api.cc

Issue 2763413003: [wasm] Skeleton WasmModuleObjectBuilder for streamed compilation (Closed)
Patch Set: [wasm] Skeleton WasmModuleObjectBuilder for streamed compilation Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/api.cc
diff --git a/src/api.cc b/src/api.cc
index 170b45402ad9b9c6c2b81efaa101f669a9897021..3e773f7347800c243617ac365bb4c8d72aeab3ef 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -7615,6 +7615,24 @@ MaybeLocal<WasmCompiledModule> WasmCompiledModule::Compile(Isolate* isolate,
Utils::ToLocal(maybe_compiled.ToHandleChecked()));
}
+void WasmModuleObjectBuilder::OnBytesReceived(
+ std::unique_ptr<const uint8_t[]>&& bytes, size_t size) {
+ received_buffers_.push_back(Buffer(std::move(bytes), size));
+ total_size_ += size;
+}
+
+MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
+ std::unique_ptr<uint8_t[]> wire_bytes(new uint8_t[total_size_]);
+ uint8_t* insert_at = wire_bytes.get();
+
+ for (size_t i = 0; i < received_buffers_.size(); ++i) {
+ const Buffer& buff = received_buffers_[i];
+ memcpy(insert_at, buff.first.get(), buff.second);
+ insert_at += buff.second;
+ }
+ return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
+}
+
// static
v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
return new ArrayBufferAllocator();
« include/v8.h ('K') | « include/v8.h ('k') | test/cctest/wasm/test-run-wasm-module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698