Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: src/d8-debug.cc

Issue 12729023: first step to remove unsafe handles (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: issue with debug build Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/d8.cc ('k') | src/global-handles.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 Local<Function> to_json_fun = 70 Local<Function> to_json_fun =
71 Function::Cast(*event_data->Get(to_json_fun_name)); 71 Function::Cast(*event_data->Get(to_json_fun_name));
72 Local<Value> event_json = to_json_fun->Call(event_data, 0, NULL); 72 Local<Value> event_json = to_json_fun->Call(event_data, 0, NULL);
73 if (try_catch.HasCaught()) { 73 if (try_catch.HasCaught()) {
74 Shell::ReportException(isolate, &try_catch); 74 Shell::ReportException(isolate, &try_catch);
75 return; 75 return;
76 } 76 }
77 77
78 // Print the event details. 78 // Print the event details.
79 Handle<Object> details = 79 Handle<Object> details =
80 Shell::DebugMessageDetails(Handle<String>::Cast(event_json)); 80 Shell::DebugMessageDetails(isolate, Handle<String>::Cast(event_json));
81 if (try_catch.HasCaught()) { 81 if (try_catch.HasCaught()) {
82 Shell::ReportException(isolate, &try_catch); 82 Shell::ReportException(isolate, &try_catch);
83 return; 83 return;
84 } 84 }
85 String::Utf8Value str(details->Get(String::New("text"))); 85 String::Utf8Value str(details->Get(String::New("text")));
86 if (str.length() == 0) { 86 if (str.length() == 0) {
87 // Empty string is used to signal not to process this event. 87 // Empty string is used to signal not to process this event.
88 return; 88 return;
89 } 89 }
90 printf("%s\n", *str); 90 printf("%s\n", *str);
(...skipping 16 matching lines...) Expand all
107 char* str = fgets(command, kBufferSize, stdin); 107 char* str = fgets(command, kBufferSize, stdin);
108 if (str == NULL) break; 108 if (str == NULL) break;
109 109
110 // Ignore empty commands. 110 // Ignore empty commands.
111 if (strlen(command) == 0) continue; 111 if (strlen(command) == 0) continue;
112 112
113 TryCatch try_catch; 113 TryCatch try_catch;
114 114
115 // Convert the debugger command to a JSON debugger request. 115 // Convert the debugger command to a JSON debugger request.
116 Handle<Value> request = 116 Handle<Value> request =
117 Shell::DebugCommandToJSONRequest(String::New(command)); 117 Shell::DebugCommandToJSONRequest(isolate, String::New(command));
118 if (try_catch.HasCaught()) { 118 if (try_catch.HasCaught()) {
119 Shell::ReportException(isolate, &try_catch); 119 Shell::ReportException(isolate, &try_catch);
120 continue; 120 continue;
121 } 121 }
122 122
123 // If undefined is returned the command was handled internally and there is 123 // If undefined is returned the command was handled internally and there is
124 // no JSON to send. 124 // no JSON to send.
125 if (request->IsUndefined()) { 125 if (request->IsUndefined()) {
126 continue; 126 continue;
127 } 127 }
(...skipping 11 matching lines...) Expand all
139 fun = Handle<Function>::Cast(cmd_processor->Get(fun_name)); 139 fun = Handle<Function>::Cast(cmd_processor->Get(fun_name));
140 args[0] = request; 140 args[0] = request;
141 Handle<Value> response_val = fun->Call(cmd_processor, kArgc, args); 141 Handle<Value> response_val = fun->Call(cmd_processor, kArgc, args);
142 if (try_catch.HasCaught()) { 142 if (try_catch.HasCaught()) {
143 Shell::ReportException(isolate, &try_catch); 143 Shell::ReportException(isolate, &try_catch);
144 continue; 144 continue;
145 } 145 }
146 Handle<String> response = Handle<String>::Cast(response_val); 146 Handle<String> response = Handle<String>::Cast(response_val);
147 147
148 // Convert the debugger response into text details and the running state. 148 // Convert the debugger response into text details and the running state.
149 Handle<Object> response_details = Shell::DebugMessageDetails(response); 149 Handle<Object> response_details =
150 Shell::DebugMessageDetails(isolate, response);
150 if (try_catch.HasCaught()) { 151 if (try_catch.HasCaught()) {
151 Shell::ReportException(isolate, &try_catch); 152 Shell::ReportException(isolate, &try_catch);
152 continue; 153 continue;
153 } 154 }
154 String::Utf8Value text_str(response_details->Get(String::New("text"))); 155 String::Utf8Value text_str(response_details->Get(String::New("text")));
155 if (text_str.length() > 0) { 156 if (text_str.length() > 0) {
156 printf("%s\n", *text_str); 157 printf("%s\n", *text_str);
157 } 158 }
158 running = 159 running =
159 response_details->Get(String::New("running"))->ToBoolean()->Value(); 160 response_details->Get(String::New("running"))->ToBoolean()->Value();
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 } 275 }
275 276
276 277
277 void RemoteDebugger::HandleMessageReceived(char* message) { 278 void RemoteDebugger::HandleMessageReceived(char* message) {
278 Locker lock(isolate_); 279 Locker lock(isolate_);
279 HandleScope scope(isolate_); 280 HandleScope scope(isolate_);
280 281
281 // Print the event details. 282 // Print the event details.
282 TryCatch try_catch; 283 TryCatch try_catch;
283 Handle<Object> details = 284 Handle<Object> details =
284 Shell::DebugMessageDetails(Handle<String>::Cast(String::New(message))); 285 Shell::DebugMessageDetails(isolate_,
286 Handle<String>::Cast(String::New(message)));
285 if (try_catch.HasCaught()) { 287 if (try_catch.HasCaught()) {
286 Shell::ReportException(isolate_, &try_catch); 288 Shell::ReportException(isolate_, &try_catch);
287 PrintPrompt(); 289 PrintPrompt();
288 return; 290 return;
289 } 291 }
290 String::Utf8Value str(details->Get(String::New("text"))); 292 String::Utf8Value str(details->Get(String::New("text")));
291 if (str.length() == 0) { 293 if (str.length() == 0) {
292 // Empty string is used to signal not to process this event. 294 // Empty string is used to signal not to process this event.
293 return; 295 return;
294 } 296 }
295 if (*str != NULL) { 297 if (*str != NULL) {
296 printf("%s\n", *str); 298 printf("%s\n", *str);
297 } else { 299 } else {
298 printf("???\n"); 300 printf("???\n");
299 } 301 }
300 302
301 bool is_running = details->Get(String::New("running"))->ToBoolean()->Value(); 303 bool is_running = details->Get(String::New("running"))->ToBoolean()->Value();
302 PrintPrompt(is_running); 304 PrintPrompt(is_running);
303 } 305 }
304 306
305 307
306 void RemoteDebugger::HandleKeyboardCommand(char* command) { 308 void RemoteDebugger::HandleKeyboardCommand(char* command) {
307 Locker lock(isolate_); 309 Locker lock(isolate_);
308 HandleScope scope(isolate_); 310 HandleScope scope(isolate_);
309 311
310 // Convert the debugger command to a JSON debugger request. 312 // Convert the debugger command to a JSON debugger request.
311 TryCatch try_catch; 313 TryCatch try_catch;
312 Handle<Value> request = 314 Handle<Value> request =
313 Shell::DebugCommandToJSONRequest(String::New(command)); 315 Shell::DebugCommandToJSONRequest(isolate_, String::New(command));
314 if (try_catch.HasCaught()) { 316 if (try_catch.HasCaught()) {
315 Shell::ReportException(isolate_, &try_catch); 317 Shell::ReportException(isolate_, &try_catch);
316 PrintPrompt(); 318 PrintPrompt();
317 return; 319 return;
318 } 320 }
319 321
320 // If undefined is returned the command was handled internally and there is 322 // If undefined is returned the command was handled internally and there is
321 // no JSON to send. 323 // no JSON to send.
322 if (request->IsUndefined()) { 324 if (request->IsUndefined()) {
323 PrintPrompt(); 325 PrintPrompt();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 // Pass the keyboard command to the main thread. 365 // Pass the keyboard command to the main thread.
364 remote_debugger_->KeyboardCommand( 366 remote_debugger_->KeyboardCommand(
365 i::SmartArrayPointer<char>(i::StrDup(command))); 367 i::SmartArrayPointer<char>(i::StrDup(command)));
366 } 368 }
367 } 369 }
368 370
369 371
370 } // namespace v8 372 } // namespace v8
371 373
372 #endif // ENABLE_DEBUGGER_SUPPORT 374 #endif // ENABLE_DEBUGGER_SUPPORT
OLDNEW
« no previous file with comments | « src/d8.cc ('k') | src/global-handles.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698