Skip to content

Commit 5fa3ffa

Browse files
psmarshallrvagg
authored andcommitted
deps: patch the V8 API to be backwards compatible with 6.7
PR-URL: #21668 Fixes: https://github.com/I Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Myles Borins <[email protected]>
1 parent 6daa4f8 commit 5fa3ffa

25 files changed

+325
-405
lines changed

deps/v8/include/libplatform/libplatform.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ V8_PLATFORM_EXPORT bool PumpMessageLoop(
6262
v8::Platform* platform, v8::Isolate* isolate,
6363
MessageLoopBehavior behavior = MessageLoopBehavior::kDoNotWait);
6464

65-
V8_PLATFORM_EXPORT V8_DEPRECATED(
65+
V8_PLATFORM_EXPORT V8_DEPRECATE_SOON(
6666
"This function has become obsolete and is essentially a nop",
6767
void EnsureEventLoopInitialized(v8::Platform* platform,
6868
v8::Isolate* isolate));

deps/v8/include/v8-inspector.h

-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ class V8_EXPORT V8ContextInfo {
9999

100100
class V8_EXPORT V8StackTrace {
101101
public:
102-
virtual StringView firstNonEmptySourceURL() const = 0;
103102
virtual bool isEmpty() const = 0;
104103
virtual StringView topSourceURL() const = 0;
105104
virtual int topLineNumber() const = 0;

deps/v8/include/v8-platform.h

+96-17
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,16 @@ class PageAllocator {
246246
*/
247247
class Platform {
248248
public:
249+
/**
250+
* This enum is used to indicate whether a task is potentially long running,
251+
* or causes a long wait. The embedder might want to use this hint to decide
252+
* whether to execute the task on a dedicated thread.
253+
*/
254+
enum ExpectedRuntime {
255+
kShortRunningTask,
256+
kLongRunningTask
257+
};
258+
249259
virtual ~Platform() = default;
250260

251261
/**
@@ -280,25 +290,101 @@ class Platform {
280290
virtual bool OnCriticalMemoryPressure(size_t length) { return false; }
281291

282292
/**
283-
* Gets the number of worker threads used by
284-
* Call(BlockingTask)OnWorkerThread(). This can be used to estimate the number
285-
* of tasks a work package should be split into. A return value of 0 means
286-
* that there are no worker threads available. Note that a value of 0 won't
287-
* prohibit V8 from posting tasks using |CallOnWorkerThread|.
293+
* Gets the number of worker threads used by GetWorkerThreadsTaskRunner() and
294+
* CallOnWorkerThread(). This can be used to estimate the number of tasks a
295+
* work package should be split into. A return value of 0 means that there are
296+
* no worker threads available. Note that a value of 0 won't prohibit V8 from
297+
* posting tasks using |CallOnWorkerThread|.
298+
*/
299+
virtual int NumberOfWorkerThreads() {
300+
return static_cast<int>(NumberOfAvailableBackgroundThreads());
301+
}
302+
303+
/**
304+
* Deprecated. Use NumberOfWorkerThreads() instead.
305+
* TODO(gab): Remove this when all embedders override
306+
* NumberOfWorkerThreads() instead.
288307
*/
289-
virtual int NumberOfWorkerThreads() = 0;
308+
V8_DEPRECATE_SOON(
309+
"NumberOfAvailableBackgroundThreads() is deprecated, use "
310+
"NumberOfAvailableBackgroundThreads() instead.",
311+
virtual size_t NumberOfAvailableBackgroundThreads()) {
312+
return 0;
313+
}
290314

291315
/**
292316
* Returns a TaskRunner which can be used to post a task on the foreground.
293317
* This function should only be called from a foreground thread.
294318
*/
295319
virtual std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner(
296-
Isolate* isolate) = 0;
320+
Isolate* isolate) {
321+
// TODO(ahaas): Make this function abstract after it got implemented on all
322+
// platforms.
323+
return {};
324+
}
325+
326+
/**
327+
* Returns a TaskRunner which can be used to post a task on a background.
328+
* This function should only be called from a foreground thread.
329+
*/
330+
V8_DEPRECATE_SOON(
331+
"GetBackgroundTaskRunner() is deprecated, use "
332+
"GetWorkerThreadsTaskRunner() "
333+
"instead.",
334+
virtual std::shared_ptr<v8::TaskRunner> GetBackgroundTaskRunner(
335+
Isolate* isolate)) {
336+
// TODO(gab): Remove this method when all embedders have moved to
337+
// GetWorkerThreadsTaskRunner().
338+
339+
// An implementation needs to be provided here because this is called by the
340+
// default GetWorkerThreadsTaskRunner() implementation below. In practice
341+
// however, all code either:
342+
// - Overrides GetWorkerThreadsTaskRunner() (thus not making this call) --
343+
// i.e. all v8 code.
344+
// - Overrides this method (thus not making this call) -- i.e. all
345+
// unadapted embedders.
346+
abort();
347+
}
348+
349+
/**
350+
* Returns a TaskRunner which can be used to post async tasks on a worker.
351+
* This function should only be called from a foreground thread.
352+
*/
353+
virtual std::shared_ptr<v8::TaskRunner> GetWorkerThreadsTaskRunner(
354+
Isolate* isolate) {
355+
// TODO(gab): Make this function abstract after it got implemented on all
356+
// platforms.
357+
return GetBackgroundTaskRunner(isolate);
358+
}
359+
360+
/**
361+
* Schedules a task to be invoked on a background thread. |expected_runtime|
362+
* indicates that the task will run a long time. The Platform implementation
363+
* takes ownership of |task|. There is no guarantee about order of execution
364+
* of tasks wrt order of scheduling, nor is there a guarantee about the
365+
* thread the task will be run on.
366+
*/
367+
V8_DEPRECATE_SOON(
368+
"ExpectedRuntime is deprecated, use CallOnWorkerThread() instead.",
369+
virtual void CallOnBackgroundThread(Task* task,
370+
ExpectedRuntime expected_runtime)) {
371+
// An implementation needs to be provided here because this is called by the
372+
// default implementation below. In practice however, all code either:
373+
// - Overrides the new method (thus not making this call) -- i.e. all v8
374+
// code.
375+
// - Overrides this method (thus not making this call) -- i.e. all
376+
// unadapted embedders.
377+
abort();
378+
}
297379

298380
/**
299381
* Schedules a task to be invoked on a worker thread.
382+
* TODO(gab): Make pure virtual when all embedders override this instead of
383+
* CallOnBackgroundThread().
300384
*/
301-
virtual void CallOnWorkerThread(std::unique_ptr<Task> task) = 0;
385+
virtual void CallOnWorkerThread(std::unique_ptr<Task> task) {
386+
CallOnBackgroundThread(task.release(), kShortRunningTask);
387+
}
302388

303389
/**
304390
* Schedules a task that blocks the main thread to be invoked with
@@ -310,13 +396,6 @@ class Platform {
310396
CallOnWorkerThread(std::move(task));
311397
}
312398

313-
/**
314-
* Schedules a task to be invoked on a worker thread after |delay_in_seconds|
315-
* expires.
316-
*/
317-
virtual void CallDelayedOnWorkerThread(std::unique_ptr<Task> task,
318-
double delay_in_seconds) = 0;
319-
320399
/**
321400
* Schedules a task to be invoked on a foreground thread wrt a specific
322401
* |isolate|. Tasks posted for the same isolate should be execute in order of
@@ -342,14 +421,14 @@ class Platform {
342421
* The definition of "foreground" is opaque to V8.
343422
*/
344423
virtual void CallIdleOnForegroundThread(Isolate* isolate, IdleTask* task) {
345-
// This must be overriden if |IdleTasksEnabled()|.
346-
abort();
424+
// TODO(ulan): Make this function abstract after V8 roll in Chromium.
347425
}
348426

349427
/**
350428
* Returns true if idle tasks are enabled for the given |isolate|.
351429
*/
352430
virtual bool IdleTasksEnabled(Isolate* isolate) {
431+
// TODO(ulan): Make this function abstract after V8 roll in Chromium.
353432
return false;
354433
}
355434

deps/v8/include/v8-profiler.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,7 @@ namespace v8 {
5454
*/
5555
class V8_EXPORT TracingCpuProfiler {
5656
public:
57-
V8_DEPRECATE_SOON(
58-
"The profiler is created automatically with the isolate.\n"
59-
"No need to create it explicitly.",
60-
static std::unique_ptr<TracingCpuProfiler> Create(Isolate*));
61-
57+
static std::unique_ptr<TracingCpuProfiler> Create(Isolate*);
6258
virtual ~TracingCpuProfiler() = default;
6359

6460
protected:

0 commit comments

Comments
 (0)