libv8 5.7.492.65.1-aarch64-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/ext/libv8/.location.yml +1 -0
  3. data/ext/libv8/arch.rb +20 -0
  4. data/ext/libv8/location.rb +89 -0
  5. data/ext/libv8/paths.rb +41 -0
  6. data/lib/libv8.rb +9 -0
  7. data/lib/libv8/version.rb +3 -0
  8. data/vendor/v8/include/libplatform/libplatform-export.h +29 -0
  9. data/vendor/v8/include/libplatform/libplatform.h +60 -0
  10. data/vendor/v8/include/libplatform/v8-tracing.h +270 -0
  11. data/vendor/v8/include/v8-debug.h +293 -0
  12. data/vendor/v8/include/v8-experimental.h +58 -0
  13. data/vendor/v8/include/v8-inspector-protocol.h +13 -0
  14. data/vendor/v8/include/v8-inspector.h +267 -0
  15. data/vendor/v8/include/v8-platform.h +219 -0
  16. data/vendor/v8/include/v8-profiler.h +897 -0
  17. data/vendor/v8/include/v8-testing.h +48 -0
  18. data/vendor/v8/include/v8-util.h +654 -0
  19. data/vendor/v8/include/v8-version-string.h +33 -0
  20. data/vendor/v8/include/v8-version.h +20 -0
  21. data/vendor/v8/include/v8.h +9866 -0
  22. data/vendor/v8/include/v8config.h +428 -0
  23. data/vendor/v8/out/arm64.release/libv8_base.a +0 -0
  24. data/vendor/v8/out/arm64.release/libv8_libbase.a +0 -0
  25. data/vendor/v8/out/arm64.release/libv8_libplatform.a +0 -0
  26. data/vendor/v8/out/arm64.release/libv8_libsampler.a +0 -0
  27. data/vendor/v8/out/arm64.release/libv8_nosnapshot.a +0 -0
  28. data/vendor/v8/out/arm64.release/libv8_snapshot.a +0 -0
  29. data/vendor/v8/out/arm64.release/obj.target/src/libv8_base.a +0 -0
  30. data/vendor/v8/out/arm64.release/obj.target/src/libv8_libbase.a +0 -0
  31. data/vendor/v8/out/arm64.release/obj.target/src/libv8_libplatform.a +0 -0
  32. data/vendor/v8/out/arm64.release/obj.target/src/libv8_libsampler.a +0 -0
  33. data/vendor/v8/out/arm64.release/obj.target/src/libv8_nosnapshot.a +0 -0
  34. data/vendor/v8/out/arm64.release/obj.target/src/libv8_snapshot.a +0 -0
  35. metadata +121 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3162714388c6d3b304f4c870843fab4ce5d45ab9
4
+ data.tar.gz: 50b138cc1224cfbaa068ca4a745744bf77558d6d
5
+ SHA512:
6
+ metadata.gz: 7e785546cecd42c9c3ee2746af6607cb7a1d768d1d29acab697a9325ea2fbf089f8118d55864d8e76bbfd4e2cd98a6e413ecb891e62d11dbc51049e2be936f94
7
+ data.tar.gz: 7caaf7d1e5fdbb74a83b838e615217608410ad70157057221914d240dd7591f294f10e04cd05bfac6dbefa75aa814f07de126d3240f5cf3afc81ca610b642535
@@ -0,0 +1 @@
1
+ --- !ruby/object:Libv8::Location::Vendor {}
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+
3
+ module Libv8
4
+ module Arch
5
+ module_function
6
+
7
+ def libv8_arch
8
+ case Gem::Platform.local.cpu
9
+ when /^arm(v6.*|v7.*)*$/ then 'arm'
10
+ when /^a(rm|arch)64$/ then 'arm64'
11
+ when /^x86$/ then 'ia32'
12
+ when /^(x86_64|amd64)$/ then 'x64'
13
+ when /^universal$/ then 'x64' # OS X
14
+ else
15
+ warn "Unsupported target: #{Gem::Platform.local.cpu}"
16
+ Gem::Platform.local.cpu
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,89 @@
1
+ require 'yaml'
2
+ require 'pathname'
3
+ require File.expand_path '../paths', __FILE__
4
+
5
+ module Libv8
6
+ class Location
7
+ def install!
8
+ File.open(Pathname(__FILE__).dirname.join('.location.yml'), "w") do |f|
9
+ f.write self.to_yaml
10
+ end
11
+ return 0
12
+ end
13
+
14
+ def self.load!
15
+ File.open(Pathname(__FILE__).dirname.join('.location.yml')) do |f|
16
+ YAML.load f
17
+ end
18
+ end
19
+
20
+ class Vendor < Location
21
+ def install!
22
+ require File.expand_path '../builder', __FILE__
23
+ builder = Libv8::Builder.new
24
+ exit_status = builder.build_libv8!
25
+ super if exit_status == 0
26
+ verify_installation!
27
+ return exit_status
28
+ end
29
+
30
+ def configure(context = MkmfContext.new)
31
+ context.incflags.insert 0, Libv8::Paths.include_paths.map{ |p| "-I#{p}" }.join(" ") + " "
32
+ context.ldflags.insert 0, Libv8::Paths.object_paths.join(" ") + " "
33
+ end
34
+
35
+ def verify_installation!
36
+ include_paths = Libv8::Paths.include_paths
37
+ unless include_paths.detect { |p| Pathname(p).join('v8.h').exist? }
38
+ fail HeaderNotFound, "Unable to locate 'v8.h' in the libv8 header paths: #{include_paths.inspect}"
39
+ end
40
+ Libv8::Paths.object_paths.each do |p|
41
+ fail ArchiveNotFound, p unless File.exist? p
42
+ end
43
+ end
44
+
45
+ class HeaderNotFound < StandardError; end
46
+
47
+ class ArchiveNotFound < StandardError
48
+ def initialize(filename)
49
+ super "libv8 did not install properly, expected binary v8 archive '#{filename}'to exist, but it was not found"
50
+ end
51
+ end
52
+ end
53
+
54
+ class System < Location
55
+ def configure(context = MkmfContext.new)
56
+ context.send(:dir_config, 'v8')
57
+ context.send(:find_header, 'v8.h') or fail NotFoundError
58
+ context.send(:find_header, 'libplatform/libplatform.h') or fail NotFoundError
59
+ context.send(:have_library, 'v8') or fail NotFoundError
60
+ end
61
+
62
+ class NotFoundError < StandardError
63
+ def initialize(*args)
64
+ super(<<-EOS)
65
+ By using --with-system-v8, you have chosen to use the version
66
+ of V8 found on your system and *not* the one that is bundled with
67
+ the libv8 rubygem.
68
+
69
+ However, your system version of v8 could not be located.
70
+
71
+ Please make sure your system version of v8 that is compatible
72
+ with #{Libv8::VERSION} installed. You may need to use the
73
+ --with-v8-dir option if it is installed in a non-standard location
74
+ EOS
75
+ end
76
+ end
77
+ end
78
+
79
+ class MkmfContext
80
+ def incflags
81
+ $INCFLAGS
82
+ end
83
+
84
+ def ldflags
85
+ $LDFLAGS
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,41 @@
1
+ require 'rbconfig'
2
+ require 'shellwords'
3
+ require File.expand_path '../arch', __FILE__
4
+
5
+ module Libv8
6
+ module Paths
7
+ module_function
8
+
9
+ def include_paths
10
+ [Shellwords.escape(File.join(vendored_source_path, 'include'))]
11
+ end
12
+
13
+ def object_paths
14
+ [:base, :libplatform, :libsampler, :libbase, :snapshot].map do |name|
15
+ Shellwords.escape libv8_object(name)
16
+ end
17
+ end
18
+
19
+ def config
20
+ RbConfig::MAKEFILE_CONFIG
21
+ end
22
+
23
+ def libv8_object(name)
24
+ filename = "#{libv8_profile}/libv8_#{name}.#{config['LIBEXT']}"
25
+ unless File.exist? filename
26
+ filename = "#{libv8_profile}/obj.target/tools/gyp/libv8_#{name}.#{config['LIBEXT']}"
27
+ end
28
+ return filename
29
+ end
30
+
31
+ def libv8_profile
32
+ base = "#{vendored_source_path}/out/#{Libv8::Arch.libv8_arch}"
33
+ debug = "#{base}.debug"
34
+ File.exist?(debug) ? debug : "#{base}.release"
35
+ end
36
+
37
+ def vendored_source_path
38
+ File.expand_path "../../../vendor/v8", __FILE__
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,9 @@
1
+ require 'libv8/version'
2
+ require 'libv8/location'
3
+
4
+ module Libv8
5
+ def self.configure_makefile
6
+ location = Location.load!
7
+ location.configure
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Libv8
2
+ VERSION = "5.7.492.65.1"
3
+ end
@@ -0,0 +1,29 @@
1
+ // Copyright 2016 the V8 project authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef V8_LIBPLATFORM_LIBPLATFORM_EXPORT_H_
6
+ #define V8_LIBPLATFORM_LIBPLATFORM_EXPORT_H_
7
+
8
+ #if defined(_WIN32)
9
+
10
+ #ifdef BUILDING_V8_PLATFORM_SHARED
11
+ #define V8_PLATFORM_EXPORT __declspec(dllexport)
12
+ #elif USING_V8_PLATFORM_SHARED
13
+ #define V8_PLATFORM_EXPORT __declspec(dllimport)
14
+ #else
15
+ #define V8_PLATFORM_EXPORT
16
+ #endif // BUILDING_V8_PLATFORM_SHARED
17
+
18
+ #else // defined(_WIN32)
19
+
20
+ // Setup for Linux shared library export.
21
+ #ifdef BUILDING_V8_PLATFORM_SHARED
22
+ #define V8_PLATFORM_EXPORT __attribute__((visibility("default")))
23
+ #else
24
+ #define V8_PLATFORM_EXPORT
25
+ #endif
26
+
27
+ #endif // defined(_WIN32)
28
+
29
+ #endif // V8_LIBPLATFORM_LIBPLATFORM_EXPORT_H_
@@ -0,0 +1,60 @@
1
+ // Copyright 2014 the V8 project authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef V8_LIBPLATFORM_LIBPLATFORM_H_
6
+ #define V8_LIBPLATFORM_LIBPLATFORM_H_
7
+
8
+ #include "libplatform/libplatform-export.h"
9
+ #include "libplatform/v8-tracing.h"
10
+ #include "v8-platform.h" // NOLINT(build/include)
11
+
12
+ namespace v8 {
13
+ namespace platform {
14
+
15
+ /**
16
+ * Returns a new instance of the default v8::Platform implementation.
17
+ *
18
+ * The caller will take ownership of the returned pointer. |thread_pool_size|
19
+ * is the number of worker threads to allocate for background jobs. If a value
20
+ * of zero is passed, a suitable default based on the current number of
21
+ * processors online will be chosen.
22
+ */
23
+ V8_PLATFORM_EXPORT v8::Platform* CreateDefaultPlatform(
24
+ int thread_pool_size = 0);
25
+
26
+ /**
27
+ * Pumps the message loop for the given isolate.
28
+ *
29
+ * The caller has to make sure that this is called from the right thread.
30
+ * Returns true if a task was executed, and false otherwise. This call does
31
+ * not block if no task is pending. The |platform| has to be created using
32
+ * |CreateDefaultPlatform|.
33
+ */
34
+ V8_PLATFORM_EXPORT bool PumpMessageLoop(v8::Platform* platform,
35
+ v8::Isolate* isolate);
36
+
37
+ /**
38
+ * Runs pending idle tasks for at most |idle_time_in_seconds| seconds.
39
+ *
40
+ * The caller has to make sure that this is called from the right thread.
41
+ * This call does not block if no task is pending. The |platform| has to be
42
+ * created using |CreateDefaultPlatform|.
43
+ */
44
+ V8_PLATFORM_EXPORT void RunIdleTasks(v8::Platform* platform,
45
+ v8::Isolate* isolate,
46
+ double idle_time_in_seconds);
47
+
48
+ /**
49
+ * Attempts to set the tracing controller for the given platform.
50
+ *
51
+ * The |platform| has to be created using |CreateDefaultPlatform|.
52
+ */
53
+ V8_PLATFORM_EXPORT void SetTracingController(
54
+ v8::Platform* platform,
55
+ v8::platform::tracing::TracingController* tracing_controller);
56
+
57
+ } // namespace platform
58
+ } // namespace v8
59
+
60
+ #endif // V8_LIBPLATFORM_LIBPLATFORM_H_
@@ -0,0 +1,270 @@
1
+ // Copyright 2016 the V8 project authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef V8_LIBPLATFORM_V8_TRACING_H_
6
+ #define V8_LIBPLATFORM_V8_TRACING_H_
7
+
8
+ #include <fstream>
9
+ #include <memory>
10
+ #include <unordered_set>
11
+ #include <vector>
12
+
13
+ #include "libplatform/libplatform-export.h"
14
+ #include "v8-platform.h" // NOLINT(build/include)
15
+
16
+ namespace v8 {
17
+
18
+ namespace base {
19
+ class Mutex;
20
+ } // namespace base
21
+
22
+ namespace platform {
23
+ namespace tracing {
24
+
25
+ const int kTraceMaxNumArgs = 2;
26
+
27
+ class V8_PLATFORM_EXPORT TraceObject {
28
+ public:
29
+ union ArgValue {
30
+ bool as_bool;
31
+ uint64_t as_uint;
32
+ int64_t as_int;
33
+ double as_double;
34
+ const void* as_pointer;
35
+ const char* as_string;
36
+ };
37
+
38
+ TraceObject() {}
39
+ ~TraceObject();
40
+ void Initialize(
41
+ char phase, const uint8_t* category_enabled_flag, const char* name,
42
+ const char* scope, uint64_t id, uint64_t bind_id, int num_args,
43
+ const char** arg_names, const uint8_t* arg_types,
44
+ const uint64_t* arg_values,
45
+ std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
46
+ unsigned int flags);
47
+ void UpdateDuration();
48
+ void InitializeForTesting(
49
+ char phase, const uint8_t* category_enabled_flag, const char* name,
50
+ const char* scope, uint64_t id, uint64_t bind_id, int num_args,
51
+ const char** arg_names, const uint8_t* arg_types,
52
+ const uint64_t* arg_values,
53
+ std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
54
+ unsigned int flags, int pid, int tid, int64_t ts, int64_t tts,
55
+ uint64_t duration, uint64_t cpu_duration);
56
+
57
+ int pid() const { return pid_; }
58
+ int tid() const { return tid_; }
59
+ char phase() const { return phase_; }
60
+ const uint8_t* category_enabled_flag() const {
61
+ return category_enabled_flag_;
62
+ }
63
+ const char* name() const { return name_; }
64
+ const char* scope() const { return scope_; }
65
+ uint64_t id() const { return id_; }
66
+ uint64_t bind_id() const { return bind_id_; }
67
+ int num_args() const { return num_args_; }
68
+ const char** arg_names() { return arg_names_; }
69
+ uint8_t* arg_types() { return arg_types_; }
70
+ ArgValue* arg_values() { return arg_values_; }
71
+ std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables() {
72
+ return arg_convertables_;
73
+ }
74
+ unsigned int flags() const { return flags_; }
75
+ int64_t ts() { return ts_; }
76
+ int64_t tts() { return tts_; }
77
+ uint64_t duration() { return duration_; }
78
+ uint64_t cpu_duration() { return cpu_duration_; }
79
+
80
+ private:
81
+ int pid_;
82
+ int tid_;
83
+ char phase_;
84
+ const char* name_;
85
+ const char* scope_;
86
+ const uint8_t* category_enabled_flag_;
87
+ uint64_t id_;
88
+ uint64_t bind_id_;
89
+ int num_args_ = 0;
90
+ const char* arg_names_[kTraceMaxNumArgs];
91
+ uint8_t arg_types_[kTraceMaxNumArgs];
92
+ ArgValue arg_values_[kTraceMaxNumArgs];
93
+ std::unique_ptr<v8::ConvertableToTraceFormat>
94
+ arg_convertables_[kTraceMaxNumArgs];
95
+ char* parameter_copy_storage_ = nullptr;
96
+ unsigned int flags_;
97
+ int64_t ts_;
98
+ int64_t tts_;
99
+ uint64_t duration_;
100
+ uint64_t cpu_duration_;
101
+
102
+ // Disallow copy and assign
103
+ TraceObject(const TraceObject&) = delete;
104
+ void operator=(const TraceObject&) = delete;
105
+ };
106
+
107
+ class V8_PLATFORM_EXPORT TraceWriter {
108
+ public:
109
+ TraceWriter() {}
110
+ virtual ~TraceWriter() {}
111
+ virtual void AppendTraceEvent(TraceObject* trace_event) = 0;
112
+ virtual void Flush() = 0;
113
+
114
+ static TraceWriter* CreateJSONTraceWriter(std::ostream& stream);
115
+
116
+ private:
117
+ // Disallow copy and assign
118
+ TraceWriter(const TraceWriter&) = delete;
119
+ void operator=(const TraceWriter&) = delete;
120
+ };
121
+
122
+ class V8_PLATFORM_EXPORT TraceBufferChunk {
123
+ public:
124
+ explicit TraceBufferChunk(uint32_t seq);
125
+
126
+ void Reset(uint32_t new_seq);
127
+ bool IsFull() const { return next_free_ == kChunkSize; }
128
+ TraceObject* AddTraceEvent(size_t* event_index);
129
+ TraceObject* GetEventAt(size_t index) { return &chunk_[index]; }
130
+
131
+ uint32_t seq() const { return seq_; }
132
+ size_t size() const { return next_free_; }
133
+
134
+ static const size_t kChunkSize = 64;
135
+
136
+ private:
137
+ size_t next_free_ = 0;
138
+ TraceObject chunk_[kChunkSize];
139
+ uint32_t seq_;
140
+
141
+ // Disallow copy and assign
142
+ TraceBufferChunk(const TraceBufferChunk&) = delete;
143
+ void operator=(const TraceBufferChunk&) = delete;
144
+ };
145
+
146
+ class V8_PLATFORM_EXPORT TraceBuffer {
147
+ public:
148
+ TraceBuffer() {}
149
+ virtual ~TraceBuffer() {}
150
+
151
+ virtual TraceObject* AddTraceEvent(uint64_t* handle) = 0;
152
+ virtual TraceObject* GetEventByHandle(uint64_t handle) = 0;
153
+ virtual bool Flush() = 0;
154
+
155
+ static const size_t kRingBufferChunks = 1024;
156
+
157
+ static TraceBuffer* CreateTraceBufferRingBuffer(size_t max_chunks,
158
+ TraceWriter* trace_writer);
159
+
160
+ private:
161
+ // Disallow copy and assign
162
+ TraceBuffer(const TraceBuffer&) = delete;
163
+ void operator=(const TraceBuffer&) = delete;
164
+ };
165
+
166
+ // Options determines how the trace buffer stores data.
167
+ enum TraceRecordMode {
168
+ // Record until the trace buffer is full.
169
+ RECORD_UNTIL_FULL,
170
+
171
+ // Record until the user ends the trace. The trace buffer is a fixed size
172
+ // and we use it as a ring buffer during recording.
173
+ RECORD_CONTINUOUSLY,
174
+
175
+ // Record until the trace buffer is full, but with a huge buffer size.
176
+ RECORD_AS_MUCH_AS_POSSIBLE,
177
+
178
+ // Echo to console. Events are discarded.
179
+ ECHO_TO_CONSOLE,
180
+ };
181
+
182
+ class V8_PLATFORM_EXPORT TraceConfig {
183
+ public:
184
+ typedef std::vector<std::string> StringList;
185
+
186
+ static TraceConfig* CreateDefaultTraceConfig();
187
+
188
+ TraceConfig() : enable_systrace_(false), enable_argument_filter_(false) {}
189
+ TraceRecordMode GetTraceRecordMode() const { return record_mode_; }
190
+ bool IsSystraceEnabled() const { return enable_systrace_; }
191
+ bool IsArgumentFilterEnabled() const { return enable_argument_filter_; }
192
+
193
+ void SetTraceRecordMode(TraceRecordMode mode) { record_mode_ = mode; }
194
+ void EnableSystrace() { enable_systrace_ = true; }
195
+ void EnableArgumentFilter() { enable_argument_filter_ = true; }
196
+
197
+ void AddIncludedCategory(const char* included_category);
198
+
199
+ bool IsCategoryGroupEnabled(const char* category_group) const;
200
+
201
+ private:
202
+ TraceRecordMode record_mode_;
203
+ bool enable_systrace_ : 1;
204
+ bool enable_argument_filter_ : 1;
205
+ StringList included_categories_;
206
+
207
+ // Disallow copy and assign
208
+ TraceConfig(const TraceConfig&) = delete;
209
+ void operator=(const TraceConfig&) = delete;
210
+ };
211
+
212
+ class V8_PLATFORM_EXPORT TracingController {
213
+ public:
214
+ enum Mode { DISABLED = 0, RECORDING_MODE };
215
+
216
+ // The pointer returned from GetCategoryGroupEnabledInternal() points to a
217
+ // value with zero or more of the following bits. Used in this class only.
218
+ // The TRACE_EVENT macros should only use the value as a bool.
219
+ // These values must be in sync with macro values in TraceEvent.h in Blink.
220
+ enum CategoryGroupEnabledFlags {
221
+ // Category group enabled for the recording mode.
222
+ ENABLED_FOR_RECORDING = 1 << 0,
223
+ // Category group enabled by SetEventCallbackEnabled().
224
+ ENABLED_FOR_EVENT_CALLBACK = 1 << 2,
225
+ // Category group enabled to export events to ETW.
226
+ ENABLED_FOR_ETW_EXPORT = 1 << 3
227
+ };
228
+
229
+ TracingController();
230
+ ~TracingController();
231
+ void Initialize(TraceBuffer* trace_buffer);
232
+ const uint8_t* GetCategoryGroupEnabled(const char* category_group);
233
+ static const char* GetCategoryGroupName(const uint8_t* category_enabled_flag);
234
+ uint64_t AddTraceEvent(
235
+ char phase, const uint8_t* category_enabled_flag, const char* name,
236
+ const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
237
+ const char** arg_names, const uint8_t* arg_types,
238
+ const uint64_t* arg_values,
239
+ std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
240
+ unsigned int flags);
241
+ void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
242
+ const char* name, uint64_t handle);
243
+
244
+ void StartTracing(TraceConfig* trace_config);
245
+ void StopTracing();
246
+
247
+ void AddTraceStateObserver(Platform::TraceStateObserver* observer);
248
+ void RemoveTraceStateObserver(Platform::TraceStateObserver* observer);
249
+
250
+ private:
251
+ const uint8_t* GetCategoryGroupEnabledInternal(const char* category_group);
252
+ void UpdateCategoryGroupEnabledFlag(size_t category_index);
253
+ void UpdateCategoryGroupEnabledFlags();
254
+
255
+ std::unique_ptr<TraceBuffer> trace_buffer_;
256
+ std::unique_ptr<TraceConfig> trace_config_;
257
+ std::unique_ptr<base::Mutex> mutex_;
258
+ std::unordered_set<Platform::TraceStateObserver*> observers_;
259
+ Mode mode_ = DISABLED;
260
+
261
+ // Disallow copy and assign
262
+ TracingController(const TracingController&) = delete;
263
+ void operator=(const TracingController&) = delete;
264
+ };
265
+
266
+ } // namespace tracing
267
+ } // namespace platform
268
+ } // namespace v8
269
+
270
+ #endif // V8_LIBPLATFORM_V8_TRACING_H_