提交 dfd6f992 编写于 作者: A Adam Barth

Remove //base depedency from DartDebugger

上级 1287f8a0
......@@ -4,6 +4,8 @@
source_set("tonic") {
sources = [
"dart_debugger.cc",
"dart_debugger.h",
"dart_dependency_catcher.cc",
"dart_dependency_catcher.h",
"dart_io.cc",
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "sky/engine/core/script/dart_debugger.h"
#include "flutter/tonic/dart_debugger.h"
#include "dart/runtime/include/dart_api.h"
#include "dart/runtime/include/dart_native_api.h"
......@@ -12,7 +12,7 @@
namespace blink {
void DartDebuggerIsolate::MessageLoop() {
MonitorLocker ml(&monitor_);
ftl::MonitorLocker locker(&monitor_);
Dart_MessageNotifyCallback saved_message_notify_callback =
Dart_GetMessageNotifyCallback();
// Request notification on isolate messages. This allows us to
......@@ -30,7 +30,7 @@ void DartDebuggerIsolate::MessageLoop() {
if (resume) {
break;
}
ml.Wait();
locker.Wait();
}
Dart_SetMessageNotifyCallback(saved_message_notify_callback);
}
......@@ -47,7 +47,7 @@ void DartDebugger::PausedEventHandler(Dart_IsolateId isolate_id,
const Dart_CodeLocation& loc) {
Dart_EnterScope();
intptr_t isolate_index = FindIsolateIndexById(isolate_id);
CHECK(isolate_index != -1);
FTL_CHECK(isolate_index != -1);
(*isolates_)[isolate_index]->MessageLoop();
Dart_ExitScope();
}
......@@ -57,7 +57,7 @@ void DartDebugger::ExceptionThrownHandler(Dart_IsolateId isolate_id,
Dart_StackTrace stack_trace) {
Dart_EnterScope();
intptr_t isolate_index = FindIsolateIndexById(isolate_id);
CHECK(isolate_index != -1);
FTL_CHECK(isolate_index != -1);
(*isolates_)[isolate_index]->MessageLoop();
Dart_ExitScope();
}
......@@ -69,11 +69,11 @@ void DartDebugger::IsolateEventHandler(Dart_IsolateId isolate_id,
AddIsolate(isolate_id);
} else {
intptr_t isolate_index = FindIsolateIndexById(isolate_id);
CHECK(isolate_index != -1);
FTL_CHECK(isolate_index != -1);
if (kind == Dart_IsolateEvent::kInterrupted) {
(*isolates_)[isolate_index]->MessageLoop();
} else {
CHECK(kind == Dart_IsolateEvent::kShutdown);
FTL_CHECK(kind == Dart_IsolateEvent::kShutdown);
RemoveIsolate(isolate_id);
}
}
......@@ -81,7 +81,7 @@ void DartDebugger::IsolateEventHandler(Dart_IsolateId isolate_id,
}
void DartDebugger::NotifyIsolate(Dart_Isolate isolate) {
base::AutoLock al(*lock_);
ftl::MutexLocker locker(mutex_);
Dart_IsolateId isolate_id = Dart_GetIsolateId(isolate);
intptr_t isolate_index = FindIsolateIndexByIdLocked(isolate_id);
if (isolate_index >= 0) {
......@@ -94,17 +94,17 @@ void DartDebugger::InitDebugger() {
Dart_SetPausedEventHandler(PausedEventHandler);
Dart_SetBreakpointResolvedHandler(BptResolvedHandler);
Dart_SetExceptionThrownHandler(ExceptionThrownHandler);
lock_ = new base::Lock();
mutex_ = new ftl::Mutex();
isolates_ = new std::vector<std::unique_ptr<DartDebuggerIsolate>>();
}
intptr_t DartDebugger::FindIsolateIndexById(Dart_IsolateId id) {
base::AutoLock al(*lock_);
ftl::MutexLocker locker(mutex_);
return FindIsolateIndexByIdLocked(id);
}
intptr_t DartDebugger::FindIsolateIndexByIdLocked(Dart_IsolateId id) {
lock_->AssertAcquired();
mutex_->AssertHeld();
for (size_t i = 0; i < isolates_->size(); i++) {
if ((*isolates_)[i]->id() == id) {
return i;
......@@ -114,15 +114,15 @@ intptr_t DartDebugger::FindIsolateIndexByIdLocked(Dart_IsolateId id) {
}
void DartDebugger::AddIsolate(Dart_IsolateId id) {
base::AutoLock al(*lock_);
CHECK(FindIsolateIndexByIdLocked(id) == -1);
ftl::MutexLocker locker(mutex_);
FTL_CHECK(FindIsolateIndexByIdLocked(id) == -1);
std::unique_ptr<DartDebuggerIsolate> debugger_isolate =
std::unique_ptr<DartDebuggerIsolate>(new DartDebuggerIsolate(id));
isolates_->push_back(std::move(debugger_isolate));
}
void DartDebugger::RemoveIsolate(Dart_IsolateId id) {
base::AutoLock al(*lock_);
ftl::MutexLocker locker(mutex_);
for (size_t i = 0; i < isolates_->size(); i++) {
if (id == (*isolates_)[i]->id()) {
isolates_->erase(isolates_->begin() + i);
......@@ -132,7 +132,7 @@ void DartDebugger::RemoveIsolate(Dart_IsolateId id) {
FTL_NOTREACHED();
}
base::Lock* DartDebugger::lock_ = nullptr;
ftl::Mutex* DartDebugger::mutex_ = nullptr;
std::vector<std::unique_ptr<DartDebuggerIsolate>>* DartDebugger::isolates_ =
nullptr;
......
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SKY_ENGINE_CORE_SCRIPT_DART_DEBUGGER_H_
#define SKY_ENGINE_CORE_SCRIPT_DART_DEBUGGER_H_
#ifndef FLUTTER_TONIC_DART_DEBUGGER_H_
#define FLUTTER_TONIC_DART_DEBUGGER_H_
#include <memory>
#include <vector>
......@@ -11,33 +11,24 @@
#include "dart/runtime/include/dart_api.h"
#include "dart/runtime/include/dart_native_api.h"
#include "dart/runtime/include/dart_tools_api.h"
#include "flutter/tonic/monitor.h"
namespace base {
class Lock;
}
#include "lib/ftl/synchronization/monitor.h"
#include "lib/ftl/synchronization/mutex.h"
namespace blink {
class DartDebuggerIsolate {
public:
DartDebuggerIsolate(Dart_IsolateId id)
: id_(id) {
}
DartDebuggerIsolate(Dart_IsolateId id) : id_(id) {}
Dart_IsolateId id() const {
return id_;
}
Dart_IsolateId id() const { return id_; }
void Notify() {
monitor_.Notify();
}
void Notify() { monitor_.Signal(); }
void MessageLoop();
private:
const Dart_IsolateId id_;
Monitor monitor_;
ftl::Monitor monitor_;
};
class DartDebugger {
......@@ -70,7 +61,7 @@ class DartDebugger {
static void RemoveIsolate(Dart_IsolateId id);
static base::Lock* lock_;
static ftl::Mutex* mutex_;
static std::vector<std::unique_ptr<DartDebuggerIsolate>>* isolates_;
friend class DartDebuggerIsolate;
......@@ -78,4 +69,4 @@ class DartDebugger {
} // namespace blink
#endif // SKY_ENGINE_CORE_SCRIPT_DART_DEBUGGER_H_
#endif // FLUTTER_TONIC_DART_DEBUGGER_H_
......@@ -7,15 +7,15 @@
#include "base/bind.h"
#include "base/callback.h"
#include "base/threading/thread.h"
#include "lib/tonic/scopes/dart_api_scope.h"
#include "lib/tonic/converter/dart_converter.h"
#include "flutter/tonic/dart_dependency_catcher.h"
#include "lib/tonic/logging/dart_error.h"
#include "lib/tonic/scopes/dart_isolate_scope.h"
#include "flutter/tonic/dart_library_provider.h"
#include "flutter/tonic/dart_library_loader.h"
#include "flutter/tonic/dart_library_provider.h"
#include "flutter/tonic/dart_state.h"
#include "flutter/tonic/monitor.h"
#include "lib/ftl/synchronization/monitor.h"
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/logging/dart_error.h"
#include "lib/tonic/scopes/dart_api_scope.h"
#include "lib/tonic/scopes/dart_isolate_scope.h"
#include "mojo/data_pipe_utils/data_pipe_drainer.h"
using mojo::common::DataPipeDrainer;
......@@ -117,7 +117,7 @@ void DartIsolateReloader::SendRequest(Dart_LibraryTag tag,
scoped_refptr<base::TaskRunner> runner =
thread_->message_loop()->task_runner();
MonitorLocker ml(&monitor_);
ftl::MonitorLocker locker(&monitor_);
// Post a task to the worker thread. This task will request the I/O and
// post a LoadResult to be processed once complete.
......@@ -131,10 +131,10 @@ void DartIsolateReloader::SendRequest(Dart_LibraryTag tag,
}
void DartIsolateReloader::PostResult(std::unique_ptr<LoadResult> load_result) {
MonitorLocker ml(&monitor_);
ftl::MonitorLocker locker(&monitor_);
pending_requests_--;
load_results_.push(std::move(load_result));
ml.Notify();
locker.Signal();
}
// As each source file is requested, a LoadRequest is queued to be processed on
......@@ -247,7 +247,7 @@ bool DartIsolateReloader::IsCompleteLocked() {
}
bool DartIsolateReloader::BlockUntilComplete() {
MonitorLocker ml(&monitor_);
ftl::MonitorLocker locker(&monitor_);
while (true) {
ProcessResultQueueLocked();
......@@ -257,7 +257,7 @@ bool DartIsolateReloader::BlockUntilComplete() {
}
// Wait to be notified about new I/O results.
ml.Wait();
locker.Wait();
}
return !Dart_IsNull(load_error_);
}
......
......@@ -14,11 +14,10 @@
#include "base/memory/weak_ptr.h"
#include "base/threading/thread.h"
#include "dart/runtime/include/dart_api.h"
#include "flutter/tonic/monitor.h"
#include "lib/ftl/synchronization/monitor.h"
namespace blink {
class DartLibraryProvider;
class Monitor;
// Reloading an isolate must be an atomic operation, meaning, no other tasks
// can run while reloading. A nested run loop is not sufficient because other
......@@ -60,7 +59,7 @@ class DartIsolateReloader {
std::unique_ptr<base::Thread> thread_;
DartLibraryProvider* library_provider_;
Monitor monitor_;
ftl::Monitor monitor_;
// The monitor is used to protect the following fields:
Dart_Handle load_error_;
std::queue<std::unique_ptr<LoadResult>> load_results_;
......
// Copyright 2015 The Chromium 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 FLUTTER_TONIC_DART_MONITOR_H_
#define FLUTTER_TONIC_DART_MONITOR_H_
#include "base/synchronization/condition_variable.h"
#include "base/synchronization/lock.h"
namespace blink {
class Monitor {
public:
Monitor() {
lock_ = new base::Lock();
condition_variable_ = new base::ConditionVariable(lock_);
}
~Monitor() {
delete condition_variable_;
delete lock_;
}
void Enter() {
lock_->Acquire();
}
void Exit() {
lock_->Release();
}
void Notify() {
condition_variable_->Signal();
}
void Wait() {
condition_variable_->Wait();
}
private:
base::Lock* lock_;
base::ConditionVariable* condition_variable_;
DISALLOW_COPY_AND_ASSIGN(Monitor);
};
class MonitorLocker {
public:
explicit MonitorLocker(Monitor* monitor) : monitor_(monitor) {
CHECK(monitor_);
monitor_->Enter();
}
virtual ~MonitorLocker() {
monitor_->Exit();
}
void Wait() {
return monitor_->Wait();
}
void Notify() {
monitor_->Notify();
}
private:
Monitor* const monitor_;
DISALLOW_COPY_AND_ASSIGN(MonitorLocker);
};
} // namespace blink
#endif // FLUTTER_TONIC_DART_MONITOR_H_
......@@ -172,13 +172,6 @@ sky_core_files = [
"window/window.h",
]
if (!flutter_product_mode) {
sky_core_files += [
"script/dart_debugger.cc",
"script/dart_debugger.h",
]
}
core_dart_files = get_path_info([
"dart/hash_codes.dart",
"dart/hooks.dart",
......
......@@ -6,15 +6,16 @@
#include "base/bind.h"
#include "dart/runtime/include/dart_tools_api.h"
#include "flutter/tonic/dart_debugger.h"
#include "flutter/tonic/dart_dependency_catcher.h"
#include "flutter/tonic/dart_io.h"
#include "flutter/tonic/dart_library_loader.h"
#include "flutter/tonic/dart_snapshot_loader.h"
#include "flutter/tonic/dart_state.h"
#include "lib/tonic/dart_wrappable.h"
#include "glue/trace_event.h"
#include "lib/tonic/dart_class_library.h"
#include "lib/tonic/dart_message_handler.h"
#include "lib/tonic/dart_wrappable.h"
#include "lib/tonic/logging/dart_error.h"
#include "lib/tonic/logging/dart_invoke.h"
#include "lib/tonic/scopes/dart_api_scope.h"
......@@ -24,7 +25,6 @@
#include "sky/engine/bindings/dart_mojo_internal.h"
#include "sky/engine/bindings/dart_runtime_hooks.h"
#include "sky/engine/bindings/dart_ui.h"
#include "sky/engine/core/script/dart_debugger.h"
#include "sky/engine/core/script/dart_init.h"
#include "sky/engine/core/script/dart_service_isolate.h"
#include "sky/engine/core/script/ui_dart_state.h"
......
......@@ -19,14 +19,15 @@
#include "base/trace_event/trace_event.h"
#include "dart/runtime/bin/embedded_dart_io.h"
#include "dart/runtime/include/dart_mirrors_api.h"
#include "flutter/tonic/dart_debugger.h"
#include "flutter/tonic/dart_dependency_catcher.h"
#include "flutter/tonic/dart_io.h"
#include "flutter/tonic/dart_library_loader.h"
#include "flutter/tonic/dart_snapshot_loader.h"
#include "flutter/tonic/dart_state.h"
#include "lib/tonic/dart_wrappable.h"
#include "lib/ftl/logging.h"
#include "lib/tonic/dart_class_library.h"
#include "lib/tonic/dart_wrappable.h"
#include "lib/tonic/logging/dart_error.h"
#include "lib/tonic/logging/dart_invoke.h"
#include "lib/tonic/scopes/dart_api_scope.h"
......@@ -37,7 +38,6 @@
#include "sky/engine/bindings/dart_mojo_internal.h"
#include "sky/engine/bindings/dart_runtime_hooks.h"
#include "sky/engine/bindings/dart_ui.h"
#include "sky/engine/core/script/dart_debugger.h"
#include "sky/engine/core/script/dart_service_isolate.h"
#include "sky/engine/core/script/ui_dart_state.h"
#include "sky/engine/core/start_up.h"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册