| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012, the Dart project authors. | 2 * Copyright (c) 2012, the Dart project authors. |
| 3 * | 3 * |
| 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u
se this file except | 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u
se this file except |
| 5 * in compliance with the License. You may obtain a copy of the License at | 5 * in compliance with the License. You may obtain a copy of the License at |
| 6 * | 6 * |
| 7 * http://www.eclipse.org/legal/epl-v10.html | 7 * http://www.eclipse.org/legal/epl-v10.html |
| 8 * | 8 * |
| 9 * Unless required by applicable law or agreed to in writing, software distribut
ed under the License | 9 * Unless required by applicable law or agreed to in writing, software distribut
ed under the License |
| 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K
IND, either express | 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K
IND, either express |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 */ | 56 */ |
| 57 public class DartiumDebugStackFrame extends DartiumDebugElement implements IStac
kFrame, | 57 public class DartiumDebugStackFrame extends DartiumDebugElement implements IStac
kFrame, |
| 58 IDartStackFrame, IExceptionStackFrame, IVariableResolver, IExpressionEvaluat
or { | 58 IDartStackFrame, IExceptionStackFrame, IVariableResolver, IExpressionEvaluat
or { |
| 59 private IThread thread; | 59 private IThread thread; |
| 60 private WebkitCallFrame webkitFrame; | 60 private WebkitCallFrame webkitFrame; |
| 61 | 61 |
| 62 private boolean isExceptionStackFrame; | 62 private boolean isExceptionStackFrame; |
| 63 | 63 |
| 64 private VariableCollector variableCollector = VariableCollector.empty(); | 64 private VariableCollector variableCollector = VariableCollector.empty(); |
| 65 | 65 |
| 66 private IValue classValue; |
| 67 private IValue globalScopeValue; |
| 68 |
| 66 public DartiumDebugStackFrame(IDebugTarget target, IThread thread, WebkitCallF
rame webkitFrame) { | 69 public DartiumDebugStackFrame(IDebugTarget target, IThread thread, WebkitCallF
rame webkitFrame) { |
| 67 this(target, thread, webkitFrame, null); | 70 this(target, thread, webkitFrame, null); |
| 68 } | 71 } |
| 69 | 72 |
| 70 public DartiumDebugStackFrame(IDebugTarget target, IThread thread, WebkitCallF
rame webkitFrame, | 73 public DartiumDebugStackFrame(IDebugTarget target, IThread thread, WebkitCallF
rame webkitFrame, |
| 71 WebkitRemoteObject exception) { | 74 WebkitRemoteObject exception) { |
| 72 super(target); | 75 super(target); |
| 73 | 76 |
| 74 this.thread = thread; | 77 this.thread = thread; |
| 75 this.webkitFrame = webkitFrame; | 78 this.webkitFrame = webkitFrame; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 IVariable thisVar = getThisVariable(); | 164 IVariable thisVar = getThisVariable(); |
| 162 | 165 |
| 163 if (thisVar != null) { | 166 if (thisVar != null) { |
| 164 IValue thisValue = thisVar.getValue(); | 167 IValue thisValue = thisVar.getValue(); |
| 165 | 168 |
| 166 for (IVariable var : thisValue.getVariables()) { | 169 for (IVariable var : thisValue.getVariables()) { |
| 167 if (var.getName().equals(varName)) { | 170 if (var.getName().equals(varName)) { |
| 168 return var; | 171 return var; |
| 169 } | 172 } |
| 170 } | 173 } |
| 174 } |
| 171 | 175 |
| 172 // search statics for an instance method | 176 // search statics |
| 173 if (thisValue instanceof DartiumDebugValue) { | 177 if (getClassValue() != null) { |
| 174 IValue classValue = ((DartiumDebugValue) thisValue).getClassValue(); | 178 for (IVariable var : getClassValue().getVariables()) { |
| 175 | 179 if (var.getName().equals(varName)) { |
| 176 if (classValue != null) { | 180 return var; |
| 177 for (IVariable var : classValue.getVariables()) { | |
| 178 if (var.getName().equals(varName)) { | |
| 179 return var; | |
| 180 } | |
| 181 } | |
| 182 } | 181 } |
| 183 } | 182 } |
| 184 } else { | |
| 185 // TODO(devoncarew): search in statics in a class function | |
| 186 // This will require a change to the WIP protocol. | |
| 187 | |
| 188 } | 183 } |
| 189 | 184 |
| 190 // search globals | 185 // search globals |
| 191 IVariable globalVar = getGlobalVariable(); | 186 if (getGlobalsScope() != null) { |
| 192 | 187 for (IVariable var : getGlobalsScope().getVariables()) { |
| 193 if (globalVar != null) { | |
| 194 for (IVariable var : globalVar.getValue().getVariables()) { | |
| 195 if (var.getName().equals(varName)) { | 188 if (var.getName().equals(varName)) { |
| 196 return var; | 189 return var; |
| 197 } | 190 } |
| 198 } | 191 } |
| 199 } | 192 } |
| 200 | 193 |
| 201 return null; | 194 return null; |
| 202 } | 195 } |
| 203 | 196 |
| 204 @SuppressWarnings("rawtypes") | 197 @SuppressWarnings("rawtypes") |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 } catch (IllegalArgumentException iae) { | 422 } catch (IllegalArgumentException iae) { |
| 430 // Dartium can send us bad paths: | 423 // Dartium can send us bad paths: |
| 431 // e:\b\build\slave\dartium-win-full\build ... rt\dart\CanvasRenderingCo
ntext2DImpl.dart | 424 // e:\b\build\slave\dartium-win-full\build ... rt\dart\CanvasRenderingCo
ntext2DImpl.dart |
| 432 DartDebugCorePlugin.logInfo("Illegal path from Dartium: " + url); | 425 DartDebugCorePlugin.logInfo("Illegal path from Dartium: " + url); |
| 433 } | 426 } |
| 434 } | 427 } |
| 435 | 428 |
| 436 return null; | 429 return null; |
| 437 } | 430 } |
| 438 | 431 |
| 439 protected IVariable getGlobalVariable() throws DebugException { | 432 protected IValue getClassValue() throws DebugException { |
| 440 for (IVariable var : getVariables()) { | 433 if (classValue != null) { |
| 441 if (var instanceof DartiumDebugVariable) { | 434 return classValue; |
| 442 if (((DartiumDebugVariable) var).isLibraryObject()) { | 435 } |
| 443 return var; | 436 |
| 444 } | 437 for (WebkitScope scope : webkitFrame.getScopeChain()) { |
| 438 if (scope.isClass()) { |
| 439 classValue = new DartiumDebugValue(getTarget(), null, scope.getObject())
; |
| 440 break; |
| 445 } | 441 } |
| 446 } | 442 } |
| 447 | 443 |
| 448 return null; | 444 return classValue; |
| 445 } |
| 446 |
| 447 protected IValue getGlobalsScope() throws DebugException { |
| 448 if (globalScopeValue != null) { |
| 449 return globalScopeValue; |
| 450 } |
| 451 |
| 452 for (WebkitScope scope : webkitFrame.getScopeChain()) { |
| 453 if (scope.isGlobal()) { |
| 454 globalScopeValue = new DartiumDebugValue(getTarget(), null, scope.getObj
ect()); |
| 455 break; |
| 456 } |
| 457 } |
| 458 |
| 459 return globalScopeValue; |
| 449 } | 460 } |
| 450 | 461 |
| 451 protected String getMappedLocationPath() { | 462 protected String getMappedLocationPath() { |
| 452 SourceMapManager.SourceLocation targetLocation = getMappedLocation(); | 463 SourceMapManager.SourceLocation targetLocation = getMappedLocation(); |
| 453 | 464 |
| 454 if (DartDebugCorePlugin.LOGGING) { | 465 if (DartDebugCorePlugin.LOGGING) { |
| 455 WebkitLocation sourceLocation = webkitFrame.getLocation(); | 466 WebkitLocation sourceLocation = webkitFrame.getLocation(); |
| 456 WebkitScript script = getConnection().getDebugger().getScript(sourceLocati
on.getScriptId()); | 467 WebkitScript script = getConnection().getDebugger().getScript(sourceLocati
on.getScriptId()); |
| 457 String scriptPath = script == null ? "null" : script.getUrl(); | 468 String scriptPath = script == null ? "null" : script.getUrl(); |
| 458 | 469 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 536 return sourceMapManager.getMappingFor( | 547 return sourceMapManager.getMappingFor( |
| 537 file, | 548 file, |
| 538 location.getLineNumber(), | 549 location.getLineNumber(), |
| 539 location.getColumnNumber()); | 550 location.getColumnNumber()); |
| 540 } else { | 551 } else { |
| 541 return null; | 552 return null; |
| 542 } | 553 } |
| 543 } | 554 } |
| 544 | 555 |
| 545 } | 556 } |
| OLD | NEW |