Commit 127bb6a8 authored by Canon Mukai's avatar Canon Mukai Committed by Commit Bot

CompressionStreams: Partition Allocate

Use partition alloc for zlib allocations instead of malloc.

Bug: 999091
Change-Id: I3481fc08fcb943f3c458e5122a7237638a75929c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1855143Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Reviewed-by: default avatarAdam Rice <ricea@chromium.org>
Commit-Queue: Canon Mukai <canonmukai@google.com>
Cr-Commit-Position: refs/heads/master@{#705030}
parent 87ee7beb
...@@ -10,5 +10,7 @@ blink_modules_sources("compression") { ...@@ -10,5 +10,7 @@ blink_modules_sources("compression") {
"deflate_transformer.h", "deflate_transformer.h",
"inflate_transformer.cc", "inflate_transformer.cc",
"inflate_transformer.h", "inflate_transformer.h",
"zlib_partition_alloc.cc",
"zlib_partition_alloc.h",
] ]
} }
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "third_party/blink/renderer/core/streams/transform_stream_default_controller_interface.h" #include "third_party/blink/renderer/core/streams/transform_stream_default_controller_interface.h"
#include "third_party/blink/renderer/core/streams/transform_stream_transformer.h" #include "third_party/blink/renderer/core/streams/transform_stream_transformer.h"
#include "third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h" #include "third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h"
#include "third_party/blink/renderer/modules/compression/zlib_partition_alloc.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/to_v8.h" #include "third_party/blink/renderer/platform/bindings/to_v8.h"
#include "v8/include/v8.h" #include "v8/include/v8.h"
...@@ -26,6 +27,7 @@ DeflateTransformer::DeflateTransformer(ScriptState* script_state, ...@@ -26,6 +27,7 @@ DeflateTransformer::DeflateTransformer(ScriptState* script_state,
: script_state_(script_state), out_buffer_(kBufferSize) { : script_state_(script_state), out_buffer_(kBufferSize) {
DCHECK(level >= 1 && level <= 9); DCHECK(level >= 1 && level <= 9);
memset(&stream_, 0, sizeof(z_stream)); memset(&stream_, 0, sizeof(z_stream));
ZlibPartitionAlloc::Configure(&stream_);
constexpr int kWindowBits = 15; constexpr int kWindowBits = 15;
constexpr int kUseGzip = 16; constexpr int kUseGzip = 16;
int err; int err;
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "third_party/blink/renderer/core/streams/transform_stream_default_controller_interface.h" #include "third_party/blink/renderer/core/streams/transform_stream_default_controller_interface.h"
#include "third_party/blink/renderer/core/streams/transform_stream_transformer.h" #include "third_party/blink/renderer/core/streams/transform_stream_transformer.h"
#include "third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h" #include "third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h"
#include "third_party/blink/renderer/modules/compression/zlib_partition_alloc.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/to_v8.h" #include "third_party/blink/renderer/platform/bindings/to_v8.h"
#include "v8/include/v8.h" #include "v8/include/v8.h"
...@@ -19,6 +20,7 @@ namespace blink { ...@@ -19,6 +20,7 @@ namespace blink {
InflateTransformer::InflateTransformer(ScriptState* script_state, Format format) InflateTransformer::InflateTransformer(ScriptState* script_state, Format format)
: script_state_(script_state), out_buffer_(kBufferSize) { : script_state_(script_state), out_buffer_(kBufferSize) {
memset(&stream_, 0, sizeof(z_stream)); memset(&stream_, 0, sizeof(z_stream));
ZlibPartitionAlloc::Configure(&stream_);
constexpr int kWindowBits = 15; constexpr int kWindowBits = 15;
constexpr int kUseGzip = 16; constexpr int kUseGzip = 16;
int err; int err;
......
#include "third_party/blink/renderer/modules/compression/zlib_partition_alloc.h"
#include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
namespace blink {
void ZlibPartitionAlloc::Configure(z_stream* stream) {
stream->zalloc = Alloc;
stream->zfree = Free;
}
void* ZlibPartitionAlloc::Alloc(void*, uint32_t items, uint32_t size) {
// BufferMalloc is safer than FastMalloc when handling untrusted data.
return WTF::Partitions::BufferMalloc(items * size, "zlib");
}
void ZlibPartitionAlloc::Free(void*, void* address) {
WTF::Partitions::BufferFree(address);
}
} // namespace blink
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_COMPRESSION_ZLIB_PARTITION_ALLOC_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_COMPRESSION_ZLIB_PARTITION_ALLOC_H_
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
#include "third_party/zlib/zlib.h"
namespace blink {
// Use partition alloc for zlib allocations.
class ZlibPartitionAlloc {
STATIC_ONLY(ZlibPartitionAlloc);
public:
static void Configure(z_stream* s);
private:
static void* Alloc(void*, uint32_t items, uint32_t size);
static void Free(void*, void*);
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_COMPRESSION_ZLIB_PARTITION_ALLOC_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment