| Index: src/heap/embedder-tracing.h
|
| diff --git a/src/heap/embedder-tracing.h b/src/heap/embedder-tracing.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..60c85cd52f285a5d6c85794216a7da22a39fb00b
|
| --- /dev/null
|
| +++ b/src/heap/embedder-tracing.h
|
| @@ -0,0 +1,56 @@
|
| +// Copyright 2016 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef V8_HEAP_EMBEDDER_TRACING_H_
|
| +#define V8_HEAP_EMBEDDER_TRACING_H_
|
| +
|
| +#include "include/v8.h"
|
| +#include "src/globals.h"
|
| +
|
| +namespace v8 {
|
| +namespace internal {
|
| +
|
| +class Heap;
|
| +
|
| +class V8_EXPORT_PRIVATE LocalEmbedderHeapTracer final {
|
| + public:
|
| + typedef std::pair<void*, void*> WrapperInfo;
|
| +
|
| + LocalEmbedderHeapTracer() : remote_tracer_(nullptr) {}
|
| +
|
| + void SetRemoteTracer(EmbedderHeapTracer* tracer) { remote_tracer_ = tracer; }
|
| + bool InUse() { return remote_tracer_ != nullptr; }
|
| +
|
| + void TracePrologue();
|
| + void TraceEpilogue();
|
| + void AbortTracing();
|
| + void EnterFinalPause();
|
| + bool Trace(double deadline,
|
| + EmbedderHeapTracer::AdvanceTracingActions actions);
|
| +
|
| + size_t NumberOfWrappersToTrace();
|
| + size_t NumberOfCachedWrappersToTrace() {
|
| + return cached_wrappers_to_trace_.size();
|
| + }
|
| + void AddWrapperToTrace(WrapperInfo entry) {
|
| + cached_wrappers_to_trace_.push_back(entry);
|
| + }
|
| + void ClearCachedWrappersToTrace() { cached_wrappers_to_trace_.clear(); }
|
| + void RegisterWrappersWithRemoteTracer();
|
| +
|
| + // In order to avoid running out of memory we force tracing wrappers if there
|
| + // are too many of them.
|
| + bool RequiresImmediateWrapperProcessing();
|
| +
|
| + private:
|
| + typedef std::vector<WrapperInfo> WrapperCache;
|
| +
|
| + EmbedderHeapTracer* remote_tracer_;
|
| + WrapperCache cached_wrappers_to_trace_;
|
| +};
|
| +
|
| +} // namespace internal
|
| +} // namespace v8
|
| +
|
| +#endif // V8_HEAP_EMBEDDER_TRACING_H_
|
|
|