OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/service.h" | 5 #include "vm/service.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 #include "include/dart_native_api.h" | 8 #include "include/dart_native_api.h" |
9 #include "platform/globals.h" | 9 #include "platform/globals.h" |
10 | 10 |
(...skipping 2023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2034 new IdParameter("targetId", false), | 2034 new IdParameter("targetId", false), |
2035 NULL, | 2035 NULL, |
2036 }; | 2036 }; |
2037 | 2037 |
2038 | 2038 |
2039 static bool GetCallSiteData(Isolate* isolate, JSONStream* js) { | 2039 static bool GetCallSiteData(Isolate* isolate, JSONStream* js) { |
2040 return GetHitsOrSites(isolate, js, true); | 2040 return GetHitsOrSites(isolate, js, true); |
2041 } | 2041 } |
2042 | 2042 |
2043 | 2043 |
2044 static const MethodParameter* add_breakpoint_params[] = { | 2044 static bool AddBreakpointCommon(Isolate* isolate, |
2045 ISOLATE_PARAMETER, | 2045 JSONStream* js, |
2046 new IdParameter("scriptId", false), | 2046 const String& script_uri) { |
2047 new IdParameter("scriptUri", false), | |
2048 new UIntParameter("line", true), | |
2049 new UIntParameter("column", false), | |
2050 NULL, | |
2051 }; | |
2052 | |
2053 | |
2054 static bool AddBreakpoint(Isolate* isolate, JSONStream* js) { | |
2055 const char* line_param = js->LookupParam("line"); | 2047 const char* line_param = js->LookupParam("line"); |
2056 intptr_t line = UIntParameter::Parse(line_param); | 2048 intptr_t line = UIntParameter::Parse(line_param); |
2057 const char* col_param = js->LookupParam("column"); | 2049 const char* col_param = js->LookupParam("column"); |
2058 intptr_t col = -1; | 2050 intptr_t col = -1; |
2059 if (col_param != NULL) { | 2051 if (col_param != NULL) { |
2060 col = UIntParameter::Parse(col_param); | 2052 col = UIntParameter::Parse(col_param); |
2061 if (col == 0) { | 2053 if (col == 0) { |
2062 // Column number is 1-based. | 2054 // Column number is 1-based. |
2063 PrintInvalidParamError(js, "column"); | 2055 PrintInvalidParamError(js, "column"); |
2064 return true; | 2056 return true; |
2065 } | 2057 } |
2066 } | 2058 } |
2067 const char* script_id_param = js->LookupParam("scriptId"); | |
2068 const char* script_uri_param = js->LookupParam("scriptUri"); | |
2069 if (script_id_param == NULL && script_uri_param == NULL) { | |
2070 js->PrintError(kInvalidParams, | |
2071 "%s expects the 'scriptId' or the 'scriptUri' parameter", | |
2072 js->method()); | |
2073 return true; | |
2074 } | |
2075 String& script_uri = String::Handle(isolate); | |
2076 if (script_id_param != NULL) { | |
2077 Object& obj = | |
2078 Object::Handle(LookupHeapObject(isolate, script_id_param, NULL)); | |
2079 if (obj.raw() == Object::sentinel().raw() || !obj.IsScript()) { | |
2080 PrintInvalidParamError(js, "scriptId"); | |
2081 return true; | |
2082 } | |
2083 const Script& script = Script::Cast(obj); | |
2084 script_uri = script.url(); | |
2085 } | |
2086 if (script_uri_param != NULL) { | |
2087 script_uri = String::New(script_uri_param); | |
2088 } | |
2089 ASSERT(!script_uri.IsNull()); | 2059 ASSERT(!script_uri.IsNull()); |
2090 Breakpoint* bpt = NULL; | 2060 Breakpoint* bpt = NULL; |
2091 bpt = isolate->debugger()->SetBreakpointAtLineCol(script_uri, line, col); | 2061 bpt = isolate->debugger()->SetBreakpointAtLineCol(script_uri, line, col); |
2092 if (bpt == NULL) { | 2062 if (bpt == NULL) { |
2093 js->PrintError(kCannotAddBreakpoint, | 2063 js->PrintError(kCannotAddBreakpoint, |
2094 "%s: Cannot add breakpoint at line '%s'", | 2064 "%s: Cannot add breakpoint at line '%s'", |
2095 js->method(), line_param); | 2065 js->method(), line_param); |
2096 return true; | 2066 return true; |
2097 } | 2067 } |
2098 bpt->PrintJSON(js); | 2068 bpt->PrintJSON(js); |
2099 return true; | 2069 return true; |
2100 } | 2070 } |
2101 | 2071 |
2102 | 2072 |
| 2073 static const MethodParameter* add_breakpoint_params[] = { |
| 2074 ISOLATE_PARAMETER, |
| 2075 new IdParameter("scriptId", true), |
| 2076 new UIntParameter("line", true), |
| 2077 new UIntParameter("column", false), |
| 2078 NULL, |
| 2079 }; |
| 2080 |
| 2081 |
| 2082 static bool AddBreakpoint(Isolate* isolate, JSONStream* js) { |
| 2083 const char* script_id_param = js->LookupParam("scriptId"); |
| 2084 Object& obj = |
| 2085 Object::Handle(LookupHeapObject(isolate, script_id_param, NULL)); |
| 2086 if (obj.raw() == Object::sentinel().raw() || !obj.IsScript()) { |
| 2087 PrintInvalidParamError(js, "scriptId"); |
| 2088 return true; |
| 2089 } |
| 2090 const Script& script = Script::Cast(obj); |
| 2091 const String& script_uri = String::Handle(script.url()); |
| 2092 ASSERT(!script_uri.IsNull()); |
| 2093 return AddBreakpointCommon(isolate, js, script_uri); |
| 2094 } |
| 2095 |
| 2096 |
| 2097 static const MethodParameter* add_breakpoint_with_script_uri_params[] = { |
| 2098 ISOLATE_PARAMETER, |
| 2099 new IdParameter("scriptUri", true), |
| 2100 new UIntParameter("line", true), |
| 2101 new UIntParameter("column", false), |
| 2102 NULL, |
| 2103 }; |
| 2104 |
| 2105 |
| 2106 static bool AddBreakpointWithScriptUri(Isolate* isolate, JSONStream* js) { |
| 2107 const char* script_uri_param = js->LookupParam("scriptUri"); |
| 2108 const String& script_uri = String::Handle(String::New(script_uri_param)); |
| 2109 return AddBreakpointCommon(isolate, js, script_uri); |
| 2110 } |
| 2111 |
| 2112 |
2103 static const MethodParameter* add_breakpoint_at_entry_params[] = { | 2113 static const MethodParameter* add_breakpoint_at_entry_params[] = { |
2104 ISOLATE_PARAMETER, | 2114 ISOLATE_PARAMETER, |
2105 new IdParameter("functionId", true), | 2115 new IdParameter("functionId", true), |
2106 NULL, | 2116 NULL, |
2107 }; | 2117 }; |
2108 | 2118 |
2109 | 2119 |
2110 static bool AddBreakpointAtEntry(Isolate* isolate, JSONStream* js) { | 2120 static bool AddBreakpointAtEntry(Isolate* isolate, JSONStream* js) { |
2111 const char* function_id = js->LookupParam("functionId"); | 2121 const char* function_id = js->LookupParam("functionId"); |
2112 Object& obj = Object::Handle(LookupHeapObject(isolate, function_id, NULL)); | 2122 Object& obj = Object::Handle(LookupHeapObject(isolate, function_id, NULL)); |
(...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3114 { "_echo", Echo, | 3124 { "_echo", Echo, |
3115 NULL }, | 3125 NULL }, |
3116 { "_respondWithMalformedJson", RespondWithMalformedJson, | 3126 { "_respondWithMalformedJson", RespondWithMalformedJson, |
3117 NULL }, | 3127 NULL }, |
3118 { "_respondWithMalformedObject", RespondWithMalformedObject, | 3128 { "_respondWithMalformedObject", RespondWithMalformedObject, |
3119 NULL }, | 3129 NULL }, |
3120 { "_triggerEchoEvent", TriggerEchoEvent, | 3130 { "_triggerEchoEvent", TriggerEchoEvent, |
3121 NULL }, | 3131 NULL }, |
3122 { "addBreakpoint", AddBreakpoint, | 3132 { "addBreakpoint", AddBreakpoint, |
3123 add_breakpoint_params }, | 3133 add_breakpoint_params }, |
| 3134 { "addBreakpointWithScriptUri", AddBreakpointWithScriptUri, |
| 3135 add_breakpoint_with_script_uri_params }, |
3124 { "addBreakpointAtEntry", AddBreakpointAtEntry, | 3136 { "addBreakpointAtEntry", AddBreakpointAtEntry, |
3125 add_breakpoint_at_entry_params }, | 3137 add_breakpoint_at_entry_params }, |
3126 { "_addBreakpointAtActivation", AddBreakpointAtActivation, | 3138 { "_addBreakpointAtActivation", AddBreakpointAtActivation, |
3127 add_breakpoint_at_activation_params }, | 3139 add_breakpoint_at_activation_params }, |
3128 { "_clearCpuProfile", ClearCpuProfile, | 3140 { "_clearCpuProfile", ClearCpuProfile, |
3129 clear_cpu_profile_params }, | 3141 clear_cpu_profile_params }, |
3130 { "evaluate", Evaluate, | 3142 { "evaluate", Evaluate, |
3131 evaluate_params }, | 3143 evaluate_params }, |
3132 { "evaluateInFrame", EvaluateInFrame, | 3144 { "evaluateInFrame", EvaluateInFrame, |
3133 evaluate_in_frame_params }, | 3145 evaluate_in_frame_params }, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3209 ServiceMethodDescriptor& method = service_methods_[i]; | 3221 ServiceMethodDescriptor& method = service_methods_[i]; |
3210 if (strcmp(method_name, method.name) == 0) { | 3222 if (strcmp(method_name, method.name) == 0) { |
3211 return &method; | 3223 return &method; |
3212 } | 3224 } |
3213 } | 3225 } |
3214 return NULL; | 3226 return NULL; |
3215 } | 3227 } |
3216 | 3228 |
3217 | 3229 |
3218 } // namespace dart | 3230 } // namespace dart |
OLD | NEW |