|
|
@ -103,7 +103,12 @@ namespace { |
|
|
|
|
|
|
|
class MockPlatform : public v8::Platform { |
|
|
|
public: |
|
|
|
MockPlatform() : time_(0.0), time_step_(0.0), idle_task_(nullptr), sem_(0) {} |
|
|
|
explicit MockPlatform(v8::TracingController* tracing_controller) |
|
|
|
: time_(0.0), |
|
|
|
time_step_(0.0), |
|
|
|
idle_task_(nullptr), |
|
|
|
sem_(0), |
|
|
|
tracing_controller_(tracing_controller) {} |
|
|
|
~MockPlatform() override { |
|
|
|
base::LockGuard<base::Mutex> lock(&mutex_); |
|
|
|
EXPECT_TRUE(foreground_tasks_.empty()); |
|
|
@ -143,6 +148,10 @@ class MockPlatform : public v8::Platform { |
|
|
|
return time_; |
|
|
|
} |
|
|
|
|
|
|
|
v8::TracingController* GetTracingController() override { |
|
|
|
return tracing_controller_; |
|
|
|
} |
|
|
|
|
|
|
|
void RunIdleTask(double deadline_in_seconds, double time_step) { |
|
|
|
time_step_ = time_step; |
|
|
|
IdleTask* task; |
|
|
@ -269,6 +278,8 @@ class MockPlatform : public v8::Platform { |
|
|
|
|
|
|
|
base::Semaphore sem_; |
|
|
|
|
|
|
|
v8::TracingController* tracing_controller_; |
|
|
|
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(MockPlatform); |
|
|
|
}; |
|
|
|
|
|
|
@ -277,12 +288,12 @@ const char test_script[] = "(x) { x*x; }"; |
|
|
|
} // namespace
|
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, Construct) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, IsEnqueued) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -300,7 +311,7 @@ TEST_F(CompilerDispatcherTest, IsEnqueued) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, FinishNow) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -319,7 +330,7 @@ TEST_F(CompilerDispatcherTest, FinishNow) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, FinishAllNow) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
constexpr int num_funcs = 2; |
|
|
@ -349,7 +360,7 @@ TEST_F(CompilerDispatcherTest, FinishAllNow) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, IdleTask) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -370,7 +381,7 @@ TEST_F(CompilerDispatcherTest, IdleTask) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, IdleTaskSmallIdleTime) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -409,7 +420,7 @@ TEST_F(CompilerDispatcherTest, IdleTaskSmallIdleTime) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, IdleTaskException) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, 50); |
|
|
|
|
|
|
|
std::string func_name("f" STR(__LINE__)); |
|
|
@ -436,7 +447,7 @@ TEST_F(CompilerDispatcherTest, IdleTaskException) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, CompileOnBackgroundThread) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -480,7 +491,7 @@ TEST_F(CompilerDispatcherTest, CompileOnBackgroundThread) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, FinishNowWithBackgroundTask) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -520,7 +531,7 @@ TEST_F(CompilerDispatcherTest, FinishNowWithBackgroundTask) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, IdleTaskMultipleJobs) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script1[] = TEST_SCRIPT(); |
|
|
@ -549,7 +560,7 @@ TEST_F(CompilerDispatcherTest, IdleTaskMultipleJobs) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, FinishNowException) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, 50); |
|
|
|
|
|
|
|
std::string func_name("f" STR(__LINE__)); |
|
|
@ -577,7 +588,7 @@ TEST_F(CompilerDispatcherTest, FinishNowException) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, AsyncAbortAllPendingBackgroundTask) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -620,7 +631,7 @@ TEST_F(CompilerDispatcherTest, AsyncAbortAllPendingBackgroundTask) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, AsyncAbortAllRunningBackgroundTask) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script1[] = TEST_SCRIPT(); |
|
|
@ -702,7 +713,7 @@ TEST_F(CompilerDispatcherTest, AsyncAbortAllRunningBackgroundTask) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, FinishNowDuringAbortAll) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -781,7 +792,7 @@ TEST_F(CompilerDispatcherTest, FinishNowDuringAbortAll) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, MemoryPressure) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -829,7 +840,7 @@ class PressureNotificationTask : public CancelableTask { |
|
|
|
} // namespace
|
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, MemoryPressureFromBackground) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -862,7 +873,7 @@ TEST_F(CompilerDispatcherTest, MemoryPressureFromBackground) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, EnqueueJob) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
|
Handle<JSFunction> f = |
|
|
@ -881,7 +892,7 @@ TEST_F(CompilerDispatcherTest, EnqueueJob) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, EnqueueWithoutSFI) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
ASSERT_TRUE(dispatcher.jobs_.empty()); |
|
|
|
ASSERT_TRUE(dispatcher.shared_to_job_id_.empty()); |
|
|
@ -906,7 +917,7 @@ TEST_F(CompilerDispatcherTest, EnqueueWithoutSFI) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, EnqueueAndStep) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script[] = TEST_SCRIPT(); |
|
|
@ -928,7 +939,7 @@ TEST_F(CompilerDispatcherTest, EnqueueAndStep) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, EnqueueParsed) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char source[] = TEST_SCRIPT(); |
|
|
@ -955,7 +966,7 @@ TEST_F(CompilerDispatcherTest, EnqueueParsed) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, EnqueueAndStepParsed) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char source[] = TEST_SCRIPT(); |
|
|
@ -984,7 +995,7 @@ TEST_F(CompilerDispatcherTest, EnqueueAndStepParsed) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, CompileParsedOutOfScope) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char source[] = TEST_SCRIPT(); |
|
|
@ -1046,7 +1057,7 @@ class MockNativeFunctionExtension : public Extension { |
|
|
|
} // namespace
|
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTestWithoutContext, CompileExtensionWithoutContext) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
Local<v8::Context> context = v8::Context::New(isolate()); |
|
|
|
|
|
|
@ -1145,7 +1156,7 @@ TEST_F(CompilerDispatcherTest, CompileLazy2FinishesDispatcherJob) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, EnqueueAndStepTwice) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char source[] = TEST_SCRIPT(); |
|
|
@ -1186,7 +1197,7 @@ TEST_F(CompilerDispatcherTest, EnqueueAndStepTwice) { |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(CompilerDispatcherTest, CompileMultipleOnBackgroundThread) { |
|
|
|
MockPlatform platform; |
|
|
|
MockPlatform platform(V8::GetCurrentPlatform()->GetTracingController()); |
|
|
|
CompilerDispatcher dispatcher(i_isolate(), &platform, FLAG_stack_size); |
|
|
|
|
|
|
|
const char script1[] = TEST_SCRIPT(); |
|
|
|