Index: src/d8.cc |
diff --git a/src/d8.cc b/src/d8.cc |
index 9e409977e3e8d7ff7be5800e926a586e4080f004..9ce1507ad60448512466d13d2c9f58dcbc175ad3 100644 |
--- a/src/d8.cc |
+++ b/src/d8.cc |
@@ -241,7 +241,12 @@ Handle<String> Shell::ReadFromStdin() { |
// Continue reading if the line ends with an escape '\\' or the line has |
// not been fully read into the buffer yet (does not end with '\n'). |
// If fgets gets an error, just give up. |
- if (fgets(buffer, kBufferSize, stdin) == NULL) return Handle<String>(); |
+ char* input = NULL; |
+ { // Release lock for blocking input. |
+ Unlocker unlock(Isolate::GetCurrent()); |
+ input = fgets(buffer, kBufferSize, stdin); |
+ } |
+ if (input == NULL) return Handle<String>(); |
length = static_cast<int>(strlen(buffer)); |
if (length == 0) { |
return accumulator; |
@@ -604,6 +609,13 @@ Handle<Value> Shell::DebugCommandToJSONRequest(Handle<String> command) { |
Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv); |
return val; |
} |
+ |
+ |
+void Shell::DispatchDebugMessages() { |
+ printf("message trying to be dispatched\n"); |
Jakob Kummerow
2012/01/20 11:53:31
intentional?
Yang
2012/01/20 11:59:51
Forgot to remove this debug message. Done.
|
+ v8::Context::Scope scope(Shell::evaluation_context_); |
+ v8::Debug::ProcessDebugMessages(); |
+} |
#endif // ENABLE_DEBUGGER_SUPPORT |
#endif // V8_SHARED |
@@ -873,6 +885,7 @@ void Shell::Initialize() { |
// Start the debugger agent if requested. |
if (i::FLAG_debugger_agent) { |
v8::Debug::EnableAgent("d8 shell", i::FLAG_debugger_port, true); |
+ v8::Debug::SetDebugMessageDispatchHandler(DispatchDebugMessages, true); |
} |
#endif // ENABLE_DEBUGGER_SUPPORT |
#endif // V8_SHARED |