| Index: samples/lineprocessor.cc
|
| diff --git a/samples/lineprocessor.cc b/samples/lineprocessor.cc
|
| index 61517d36e54d3550a5023e1f41e0f01776f8fdff..1606a8f99c71b72ae52a8b47d847795e9f4c00eb 100644
|
| --- a/samples/lineprocessor.cc
|
| +++ b/samples/lineprocessor.cc
|
| @@ -25,8 +25,20 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +
|
| +// This controls whether this sample is compiled with debugger support.
|
| +// You may trace its usages in source text to see what parts of program
|
| +// are responsible for debugging support.
|
| +// Note that V8 itself should be compiled with enabled debugger support
|
| +// to have it all working.
|
| +#define SUPPORT_DEBUGGING
|
| +
|
| #include <v8.h>
|
| +
|
| +#ifdef SUPPORT_DEBUGGING
|
| #include <v8-debug.h>
|
| +#endif
|
| +
|
| #include <fcntl.h>
|
| #include <string.h>
|
| #include <stdio.h>
|
| @@ -103,8 +115,9 @@ v8::Handle<v8::Value> ReadLine(const v8::Arguments& args);
|
| bool RunCppCycle(v8::Handle<v8::Script> script, v8::Local<v8::Context> context,
|
| bool report_exceptions);
|
|
|
| -v8::Persistent<v8::Context> debug_message_context;
|
|
|
| +#ifdef SUPPORT_DEBUGGING
|
| +v8::Persistent<v8::Context> debug_message_context;
|
|
|
| void DispatchDebugMessages() {
|
| // We are in some random thread. We should already have v8::Locker acquired
|
| @@ -122,6 +135,7 @@ void DispatchDebugMessages() {
|
|
|
| v8::Debug::ProcessDebugMessages();
|
| }
|
| +#endif
|
|
|
|
|
| int RunMain(int argc, char* argv[]) {
|
| @@ -132,9 +146,12 @@ int RunMain(int argc, char* argv[]) {
|
| v8::Handle<v8::Value> script_name(NULL);
|
| int script_param_counter = 0;
|
|
|
| +#ifdef SUPPORT_DEBUGGING
|
| int port_number = -1;
|
| bool wait_for_connection = false;
|
| bool support_callback = false;
|
| +#endif
|
| +
|
| MainCycleType cycle_type = CycleInCpp;
|
|
|
| for (int i = 1; i < argc; i++) {
|
| @@ -143,17 +160,19 @@ int RunMain(int argc, char* argv[]) {
|
| // Ignore any -f flags for compatibility with the other stand-
|
| // alone JavaScript engines.
|
| continue;
|
| - } else if (strcmp(str, "--callback") == 0) {
|
| - support_callback = true;
|
| - } else if (strcmp(str, "--wait-for-connection") == 0) {
|
| - wait_for_connection = true;
|
| } else if (strcmp(str, "--main-cycle-in-cpp") == 0) {
|
| cycle_type = CycleInCpp;
|
| } else if (strcmp(str, "--main-cycle-in-js") == 0) {
|
| cycle_type = CycleInJs;
|
| +#ifdef SUPPORT_DEBUGGING
|
| + } else if (strcmp(str, "--callback") == 0) {
|
| + support_callback = true;
|
| + } else if (strcmp(str, "--wait-for-connection") == 0) {
|
| + wait_for_connection = true;
|
| } else if (strcmp(str, "-p") == 0 && i + 1 < argc) {
|
| port_number = atoi(argv[i + 1]); // NOLINT
|
| i++;
|
| +#endif
|
| } else if (strncmp(str, "--", 2) == 0) {
|
| printf("Warning: unknown flag %s.\nTry --help for options\n", str);
|
| } else if (strcmp(str, "-e") == 0 && i + 1 < argc) {
|
| @@ -197,12 +216,12 @@ int RunMain(int argc, char* argv[]) {
|
| // Create a new execution environment containing the built-in
|
| // functions
|
| v8::Handle<v8::Context> context = v8::Context::New(NULL, global);
|
| - debug_message_context = v8::Persistent<v8::Context>::New(context);
|
| -
|
| -
|
| // Enter the newly created execution environment.
|
| v8::Context::Scope context_scope(context);
|
|
|
| +#ifdef SUPPORT_DEBUGGING
|
| + debug_message_context = v8::Persistent<v8::Context>::New(context);
|
| +
|
| v8::Locker locker;
|
|
|
| if (support_callback) {
|
| @@ -210,10 +229,9 @@ int RunMain(int argc, char* argv[]) {
|
| }
|
|
|
| if (port_number != -1) {
|
| - const char* auto_break_param = "--debugger_auto_break";
|
| - v8::V8::SetFlagsFromString(auto_break_param, strlen(auto_break_param));
|
| v8::Debug::EnableAgent("lineprocessor", port_number, wait_for_connection);
|
| }
|
| +#endif
|
|
|
| bool report_exceptions = true;
|
|
|
| @@ -254,7 +272,9 @@ int RunMain(int argc, char* argv[]) {
|
|
|
| bool RunCppCycle(v8::Handle<v8::Script> script, v8::Local<v8::Context> context,
|
| bool report_exceptions) {
|
| +#ifdef SUPPORT_DEBUGGING
|
| v8::Locker lock;
|
| +#endif
|
|
|
| v8::Handle<v8::String> fun_name = v8::String::New("ProcessLine");
|
| v8::Handle<v8::Value> process_val =
|
| @@ -407,7 +427,9 @@ v8::Handle<v8::String> ReadLine() {
|
|
|
| char* res;
|
| {
|
| +#ifdef SUPPORT_DEBUGGING
|
| v8::Unlocker unlocker;
|
| +#endif
|
| res = fgets(buffer, kBufferSize, stdin);
|
| }
|
| if (res == NULL) {
|
|
|