Adding NaN support
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.connect/src/org/eclipse/e4/languages/javascript/debug/connect/JSONConstants.java b/bundles/org.eclipse.e4.languages.javascript.debug.connect/src/org/eclipse/e4/languages/javascript/debug/connect/JSONConstants.java
index 4b7b8d7..cf324b4 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.connect/src/org/eclipse/e4/languages/javascript/debug/connect/JSONConstants.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.connect/src/org/eclipse/e4/languages/javascript/debug/connect/JSONConstants.java
@@ -56,6 +56,7 @@
public static final String PROTOTYPE_OBJECT = "prototypeObject"; //$NON-NLS-1$
public static final String PROTO_OBJECT = "protoObject"; //$NON-NLS-1$
public static final String CONSTRUCTOR_FUNCTION = "constructorFunction"; //$NON-NLS-1$
+ public static final String NAN = "NaN"; //$NON-NLS-1$
// id constants
public static final String THREAD_ID = "threadId"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/NaNValueImpl.java b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/NaNValueImpl.java
new file mode 100644
index 0000000..c16bb87
--- /dev/null
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/NaNValueImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.e4.languages.javascript.jsdi.rhino;
+
+import org.eclipse.e4.languages.javascript.debug.connect.JSONConstants;
+import org.eclipse.e4.languages.javascript.jsdi.NaNValue;
+
+/**
+ * Rhino implementation of {@link NaNValue}
+ *
+ * @since 1.0
+ */
+public class NaNValueImpl extends MirrorImpl implements NaNValue {
+
+ /**
+ * Constructor
+ *
+ * @param vm
+ * @param description
+ */
+ public NaNValueImpl(VirtualMachineImpl vm) {
+ super(vm);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return JSONConstants.NAN;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.e4.languages.javascript.jsdi.Value#getValueTypeName()
+ */
+ public String getValueTypeName() {
+ return JSONConstants.NAN;
+ }
+}
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/StackFrameImpl.java b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/StackFrameImpl.java
index 6d40b42..c110ad2 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/StackFrameImpl.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/StackFrameImpl.java
@@ -43,8 +43,7 @@
this.contextId = (Number) jsonFrame.get(JSONConstants.CONTEXT_ID);
this.ref = (Number) jsonFrame.get(JSONConstants.REF);
- Long scriptId = new Long(((Number) jsonFrame
- .get(JSONConstants.SCRIPT_ID)).longValue());
+ Long scriptId = new Long(((Number) jsonFrame.get(JSONConstants.SCRIPT_ID)).longValue());
ScriptReferenceImpl script = vm.script(scriptId);
String function = (String) jsonFrame.get(JSONConstants.FUNCTION);
@@ -53,8 +52,7 @@
} else {
Number line = (Number) jsonFrame.get(JSONConstants.LINE);
Location lineLocation = script.lineLocation(line.intValue());
- this.location = lineLocation != null ? lineLocation
- : new LocationImpl(vm, function, line.intValue(), script);
+ this.location = lineLocation != null ? lineLocation : new LocationImpl(vm, function, line.intValue(), script);
}
}
@@ -62,9 +60,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.StackFrame#evaluate(java.lang
- * .String)
+ * @see org.eclipse.e4.languages.javascript.jsdi.StackFrame#evaluate(java.lang .String)
*/
public Value evaluate(String expression) {
Request request = new Request(JSONConstants.EVALUATE);
@@ -85,9 +81,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.StackFrame#getValue(org.eclipse
- * .e4.languages.javascript.jsdi.Variable)
+ * @see org.eclipse.e4.languages.javascript.jsdi.StackFrame#getValue(org.eclipse .e4.languages.javascript.jsdi.Variable)
*/
public Value getValue(Variable variable) {
VariableImpl variableImpl = (VariableImpl) variable;
@@ -125,13 +119,15 @@
private Value createValue(Map body) throws IllegalStateException {
Map lookup = (Map) body.get(JSONConstants.LOOKUP);
String type = (String) lookup.get(JSONConstants.TYPE);
- // "undefined", "null", "boolean", "number", "string", "object",
+ // "undefined", "null", "NaN", "boolean", "number", "string", "object",
// "function"
if (type.equals(JSONConstants.UNDEFINED))
return vm.undefinedValue;
else if (type.equals(JSONConstants.NULL))
return vm.nullValue;
+ else if (type.equals(JSONConstants.NAN))
+ return vm.nanValue;
else if (type.equals(JSONConstants.BOOLEAN))
return new BooleanValueImpl(vm, lookup);
else if (type.equals(JSONConstants.NUMBER))
@@ -217,8 +213,7 @@
* @return true if this frame is visible, false otherwise
*/
public synchronized boolean isVisible(VariableImpl variable) {
- return variables != null
- && (thisVariable == variable || variables.contains(variable));
+ return variables != null && (thisVariable == variable || variables.contains(variable));
}
/**
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/VirtualMachineImpl.java b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/VirtualMachineImpl.java
index 0868bcf..b781472 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/VirtualMachineImpl.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/VirtualMachineImpl.java
@@ -28,16 +28,14 @@
*/
public class VirtualMachineImpl implements VirtualMachine {
- public final UndefinedValueImpl undefinedValue = new UndefinedValueImpl(
- this);
+ public final UndefinedValueImpl undefinedValue = new UndefinedValueImpl(this);
public final NullValueImpl nullValue = new NullValueImpl(this);
+ public final NaNValueImpl nanValue = new NaNValueImpl(this);
private final Map scripts = new HashMap();
private final DebugSession session;
- private EventRequestManagerImpl eventRequestManager = new EventRequestManagerImpl(
- this);
- private final EventQueue eventQueue = new EventQueueImpl(this,
- eventRequestManager);
+ private EventRequestManagerImpl eventRequestManager = new EventRequestManagerImpl(this);
+ private final EventQueue eventQueue = new EventQueueImpl(this, eventRequestManager);
private Map threads = new HashMap();
private boolean disconnected = false;
@@ -58,8 +56,7 @@
Request request = new Request(JSONConstants.SCRIPTS);
try {
Response response = sendRequest(request);
- List scriptIds = (List) response.getBody().get(
- JSONConstants.SCRIPTS);
+ List scriptIds = (List) response.getBody().get(JSONConstants.SCRIPTS);
for (Iterator iterator = scriptIds.iterator(); iterator.hasNext();) {
Long scriptId = new Long(((Number) iterator.next()).longValue());
@@ -106,8 +103,7 @@
* @param script
*/
public synchronized ScriptReferenceImpl addScript(Long scriptId) {
- ScriptReferenceImpl script = (ScriptReferenceImpl) scripts
- .get(scriptId);
+ ScriptReferenceImpl script = (ScriptReferenceImpl) scripts.get(scriptId);
if (script != null)
return script;
@@ -131,8 +127,7 @@
* @throws TimeoutException
* @throws DisconnectException
*/
- public EventPacket receiveEvent(int timeout) throws TimeoutException,
- DisconnectException {
+ public EventPacket receiveEvent(int timeout) throws TimeoutException, DisconnectException {
return session.receiveEvent(timeout);
}
@@ -145,8 +140,7 @@
* @throws TimeoutException
* @throws DisconnectException
*/
- public Response sendRequest(Request request, int timeout)
- throws TimeoutException, DisconnectException {
+ public Response sendRequest(Request request, int timeout) throws TimeoutException, DisconnectException {
session.sendRequest(request);
return session.receiveResponse(request.getSequence(), timeout);
}
@@ -154,12 +148,9 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#sendRequest(org
- * .eclipse.e4.languages.javascript.debug.connect.Request)
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#sendRequest(org .eclipse.e4.languages.javascript.debug.connect.Request)
*/
- public Response sendRequest(Request request) throws TimeoutException,
- DisconnectException {
+ public Response sendRequest(Request request) throws TimeoutException, DisconnectException {
return sendRequest(request, 30000);
}
@@ -172,13 +163,11 @@
Request request = new Request(JSONConstants.THREADS);
try {
Response response = sendRequest(request);
- List threadIds = (List) response.getBody().get(
- JSONConstants.THREADS);
+ List threadIds = (List) response.getBody().get(JSONConstants.THREADS);
HashMap allThreads = new HashMap(threadIds.size());
for (Iterator iterator = threadIds.iterator(); iterator.hasNext();) {
Long threadId = new Long(((Number) iterator.next()).longValue());
- ThreadReferenceImpl thread = (ThreadReferenceImpl) threads
- .get(threadId);
+ ThreadReferenceImpl thread = (ThreadReferenceImpl) threads.get(threadId);
if (thread == null) {
thread = createThreadReference(threadId);
}
@@ -194,8 +183,7 @@
}
public synchronized ThreadReferenceImpl addThread(Long threadId) {
- ThreadReferenceImpl thread = (ThreadReferenceImpl) threads
- .get(threadId);
+ ThreadReferenceImpl thread = (ThreadReferenceImpl) threads.get(threadId);
if (thread != null)
return thread;
@@ -235,8 +223,7 @@
* @return
*/
public synchronized ThreadReferenceImpl getThread(Long threadId) {
- ThreadReferenceImpl thread = (ThreadReferenceImpl) threads
- .get(threadId);
+ ThreadReferenceImpl thread = (ThreadReferenceImpl) threads.get(threadId);
if (thread == null) {
thread = createThreadReference(threadId);
if (thread != null)
@@ -248,19 +235,15 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#description()
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#description()
*/
public String description() {
Request request = new Request(JSONConstants.VERSION);
try {
Response response = sendRequest(request);
StringBuffer buffer = new StringBuffer();
- buffer.append(
- (String) response.getBody().get(JSONConstants.VM_VENDOR))
- .append(JSONConstants.SPACE);
- buffer.append(response.getBody().get(JSONConstants.VM_NAME))
- .append(JSONConstants.SPACE);
+ buffer.append((String) response.getBody().get(JSONConstants.VM_VENDOR)).append(JSONConstants.SPACE);
+ buffer.append(response.getBody().get(JSONConstants.VM_NAME)).append(JSONConstants.SPACE);
buffer.append(response.getBody().get(JSONConstants.VM_VERSION));
return buffer.toString();
} catch (DisconnectException e) {
@@ -386,8 +369,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOf(boolean)
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOf(boolean)
*/
public Value mirrorOf(boolean bool) {
return new BooleanValueImpl(this, Boolean.valueOf(bool));
@@ -396,8 +378,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOf(int)
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOf(int)
*/
public Value mirrorOf(Number number) {
return new NumberValueImpl(this, number);
@@ -406,9 +387,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOf(java
- * .lang.String)
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOf(java .lang.String)
*/
public StringValue mirrorOf(String string) {
return new StringValueImpl(this, string);
@@ -417,8 +396,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOfNull()
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOfNull()
*/
public Value mirrorOfNull() {
return nullValue;
@@ -427,9 +405,16 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOfUndefined
- * ()
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOfNull()
+ */
+ public Value mirrorOfNaN() {
+ return nanValue;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#mirrorOfUndefined ()
*/
public Value mirrorOfUndefined() {
return undefinedValue;
@@ -438,9 +423,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#eventRequestManager
- * ()
+ * @see org.eclipse.e4.languages.javascript.jsdi.VirtualMachine#eventRequestManager ()
*/
public EventRequestManager eventRequestManager() {
return eventRequestManager;
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/event/EventQueueImpl.java b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/event/EventQueueImpl.java
index 4227433..abeb71b 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/event/EventQueueImpl.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi.rhino/src/org/eclipse/e4/languages/javascript/jsdi/rhino/event/EventQueueImpl.java
@@ -41,8 +41,7 @@
* @param vm
* @param eventRequestManager
*/
- public EventQueueImpl(VirtualMachineImpl vm,
- EventRequestManagerImpl eventRequestManager) {
+ public EventQueueImpl(VirtualMachineImpl vm, EventRequestManagerImpl eventRequestManager) {
this.vm = vm;
this.eventRequestManager = eventRequestManager;
}
@@ -59,8 +58,7 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.e4.languages.javascript.jsdi.event.EventQueue#remove(int)
+ * @see org.eclipse.e4.languages.javascript.jsdi.event.EventQueue#remove(int)
*/
public EventSet remove(int timeout) {
try {
@@ -69,114 +67,80 @@
String eventName = event.getEvent();
EventSetImpl eventSet = new EventSetImpl(vm);
if (eventName.equals(JSONConstants.SCRIPT)) {
- Long threadId = new Long(((Number) event.getBody().get(
- JSONConstants.THREAD_ID)).longValue());
+ Long threadId = new Long(((Number) event.getBody().get(JSONConstants.THREAD_ID)).longValue());
ThreadReferenceImpl thread = vm.getThread(threadId);
eventSet.setThread(thread);
- Long scriptId = new Long(((Number) event.getBody().get(
- JSONConstants.SCRIPT_ID)).longValue());
+ Long scriptId = new Long(((Number) event.getBody().get(JSONConstants.SCRIPT_ID)).longValue());
ScriptReferenceImpl script = vm.addScript(scriptId);
- List scriptLoadRequests = eventRequestManager
- .scriptLoadRequests();
- for (Iterator iterator = scriptLoadRequests.iterator(); iterator
- .hasNext();) {
- ScriptLoadRequest request = (ScriptLoadRequest) iterator
- .next();
+ List scriptLoadRequests = eventRequestManager.scriptLoadRequests();
+ for (Iterator iterator = scriptLoadRequests.iterator(); iterator.hasNext();) {
+ ScriptLoadRequest request = (ScriptLoadRequest) iterator.next();
if (request.isEnabled())
- eventSet.add(new ScriptLoadEventImpl(vm, thread,
- script, request));
+ eventSet.add(new ScriptLoadEventImpl(vm, thread, script, request));
}
} else if (eventName.equals(JSONConstants.BREAK)) {
- Long threadId = new Long(((Number) event.getBody().get(
- JSONConstants.THREAD_ID)).longValue());
+ Long threadId = new Long(((Number) event.getBody().get(JSONConstants.THREAD_ID)).longValue());
ThreadReferenceImpl thread = vm.getThread(threadId);
eventSet.setThread(thread);
- Long scriptId = new Long(((Number) event.getBody().get(
- JSONConstants.SCRIPT_ID)).longValue());
+ Long scriptId = new Long(((Number) event.getBody().get(JSONConstants.SCRIPT_ID)).longValue());
ScriptReferenceImpl script = vm.getScript(scriptId);
- int lineNumber = ((Number) event.getBody().get(
- JSONConstants.LINE_NUMBER)).intValue();
+ int lineNumber = ((Number) event.getBody().get(JSONConstants.LINE_NUMBER)).intValue();
Location location = script.lineLocation(lineNumber);
boolean atBreakpoint = false;
- List jsonBreakpoints = (List) event.getBody().get(
- JSONConstants.BREAKPOINTS);
+ List jsonBreakpoints = (List) event.getBody().get(JSONConstants.BREAKPOINTS);
if (jsonBreakpoints != null) {
List breakpoints = new ArrayList(jsonBreakpoints.size());
- for (Iterator iterator = jsonBreakpoints.iterator(); iterator
- .hasNext();) {
+ for (Iterator iterator = jsonBreakpoints.iterator(); iterator.hasNext();) {
Number breakpointId = (Number) iterator.next();
breakpoints.add(new Long(breakpointId.longValue()));
}
- List breakpointRequests = eventRequestManager
- .breakpointRequests();
- for (Iterator iterator = breakpointRequests.iterator(); iterator
- .hasNext();) {
- BreakpointRequestImpl request = (BreakpointRequestImpl) iterator
- .next();
+ List breakpointRequests = eventRequestManager.breakpointRequests();
+ for (Iterator iterator = breakpointRequests.iterator(); iterator.hasNext();) {
+ BreakpointRequestImpl request = (BreakpointRequestImpl) iterator.next();
ThreadReference requestThread = request.thread();
- if (request.isEnabled()
- && (requestThread == null || thread == requestThread)
- && breakpoints.contains(request
- .breakpointId())) {
- eventSet.add(new BreakpointEventImpl(vm,
- thread, location, request));
+ if (request.isEnabled() && (requestThread == null || thread == requestThread) && breakpoints.contains(request.breakpointId())) {
+ eventSet.add(new BreakpointEventImpl(vm, thread, location, request));
atBreakpoint = true;
}
}
}
- String stepType = (String) event.getBody().get(
- JSONConstants.STEP);
+ String stepType = (String) event.getBody().get(JSONConstants.STEP);
if (JSONConstants.SUSPENDED.equals(stepType)) {
- List suspendRequests = eventRequestManager
- .suspendRequests();
- for (Iterator iterator = suspendRequests.iterator(); iterator
- .hasNext();) {
- SuspendRequestImpl request = (SuspendRequestImpl) iterator
- .next();
+ List suspendRequests = eventRequestManager.suspendRequests();
+ for (Iterator iterator = suspendRequests.iterator(); iterator.hasNext();) {
+ SuspendRequestImpl request = (SuspendRequestImpl) iterator.next();
ThreadReference requestThread = request.thread();
- if (request.isEnabled()
- && (requestThread == null || thread == requestThread)) {
- eventSet.add(new SuspendEventImpl(vm, thread,
- location, request));
+ if (request.isEnabled() && (requestThread == null || thread == requestThread)) {
+ eventSet.add(new SuspendEventImpl(vm, thread, location, request));
}
}
} else if (stepType != null) {
List stepRequests = eventRequestManager.stepRequests();
- for (Iterator iterator = stepRequests.iterator(); iterator
- .hasNext();) {
- StepRequestImpl request = (StepRequestImpl) iterator
- .next();
+ for (Iterator iterator = stepRequests.iterator(); iterator.hasNext();) {
+ StepRequestImpl request = (StepRequestImpl) iterator.next();
ThreadReference requestThread = request.thread();
- if (request.isEnabled()
- && (requestThread == null || thread == requestThread)) {
- eventSet.add(new StepEventImpl(vm, thread,
- location, request));
+ if (request.isEnabled() && (requestThread == null || thread == requestThread)) {
+ eventSet.add(new StepEventImpl(vm, thread, location, request));
}
}
}
- Boolean debuggerStatement = (Boolean) event.getBody().get(
- JSONConstants.DEBUGGER_STATEMENT);
+ Boolean debuggerStatement = (Boolean) event.getBody().get(JSONConstants.DEBUGGER_STATEMENT);
if (debuggerStatement.booleanValue()) {
- List debuggerStatementRequests = eventRequestManager
- .debuggerStatementRequests();
- for (Iterator iterator = debuggerStatementRequests
- .iterator(); iterator.hasNext();) {
- DebuggerStatementRequestImpl request = (DebuggerStatementRequestImpl) iterator
- .next();
+ List debuggerStatementRequests = eventRequestManager.debuggerStatementRequests();
+ for (Iterator iterator = debuggerStatementRequests.iterator(); iterator.hasNext();) {
+ DebuggerStatementRequestImpl request = (DebuggerStatementRequestImpl) iterator.next();
ThreadReference requestThread = request.thread();
- if (request.isEnabled()
- && (requestThread == null || thread == requestThread)) {
- eventSet.add(new DebuggerStatementEventImpl(vm,
- thread, location, request));
+ if (request.isEnabled() && (requestThread == null || thread == requestThread)) {
+ eventSet.add(new DebuggerStatementEventImpl(vm, thread, location, request));
}
}
}
@@ -184,66 +148,48 @@
if (!eventSet.isEmpty())
thread.markSuspended(atBreakpoint);
} else if (eventName.equals(JSONConstants.EXCEPTION)) {
- Long threadId = new Long(((Number) event.getBody().get(
- JSONConstants.THREAD_ID)).longValue());
+ Long threadId = new Long(((Number) event.getBody().get(JSONConstants.THREAD_ID)).longValue());
ThreadReferenceImpl thread = vm.getThread(threadId);
eventSet.setThread(thread);
- Long scriptId = new Long(((Number) event.getBody().get(
- JSONConstants.SCRIPT_ID)).longValue());
+ Long scriptId = new Long(((Number) event.getBody().get(JSONConstants.SCRIPT_ID)).longValue());
ScriptReferenceImpl script = vm.getScript(scriptId);
- int lineNumber = ((Number) event.getBody().get(
- JSONConstants.LINE_NUMBER)).intValue();
+ int lineNumber = ((Number) event.getBody().get(JSONConstants.LINE_NUMBER)).intValue();
Location location = script.lineLocation(lineNumber);
- String message = (String) event.getBody().get(
- JSONConstants.MESSAGE);
+ String message = (String) event.getBody().get(JSONConstants.MESSAGE);
- List exceptionRequests = eventRequestManager
- .scriptLoadRequests();
- for (Iterator iterator = exceptionRequests.iterator(); iterator
- .hasNext();) {
- ExceptionRequest request = (ExceptionRequest) iterator
- .next();
+ List exceptionRequests = eventRequestManager.exceptionRequests();
+ for (Iterator iterator = exceptionRequests.iterator(); iterator.hasNext();) {
+ ExceptionRequest request = (ExceptionRequest) iterator.next();
if (request.isEnabled()) {
- eventSet.add(new ExceptionEventImpl(vm, thread,
- location, message, request));
+ eventSet.add(new ExceptionEventImpl(vm, thread, location, message, request));
}
}
if (!eventSet.isEmpty())
thread.markSuspended(false);
} else if (eventName.equals(JSONConstants.THREAD)) {
- Long threadId = new Long(((Number) event.getBody().get(
- JSONConstants.THREAD_ID)).longValue());
+ Long threadId = new Long(((Number) event.getBody().get(JSONConstants.THREAD_ID)).longValue());
- String type = (String) event.getBody().get(
- JSONConstants.TYPE);
+ String type = (String) event.getBody().get(JSONConstants.TYPE);
if (JSONConstants.ENTER.equals(type)) {
ThreadReferenceImpl thread = vm.addThread(threadId);
eventSet.setThread(thread);
- List threadEnterRequests = eventRequestManager
- .threadEnterRequests();
- for (Iterator iterator = threadEnterRequests.iterator(); iterator
- .hasNext();) {
- ThreadEnterRequest request = (ThreadEnterRequest) iterator
- .next();
+ List threadEnterRequests = eventRequestManager.threadEnterRequests();
+ for (Iterator iterator = threadEnterRequests.iterator(); iterator.hasNext();) {
+ ThreadEnterRequest request = (ThreadEnterRequest) iterator.next();
if (request.isEnabled())
- eventSet.add(new ThreadEnterEventImpl(vm,
- thread, request));
+ eventSet.add(new ThreadEnterEventImpl(vm, thread, request));
}
} else if (JSONConstants.EXIT.equals(type)) {
ThreadReferenceImpl thread = vm.removeThread(threadId);
- List threadExitRequests = eventRequestManager
- .threadExitRequests();
- for (Iterator iterator = threadExitRequests.iterator(); iterator
- .hasNext();) {
- ThreadExitRequest request = (ThreadExitRequest) iterator
- .next();
+ List threadExitRequests = eventRequestManager.threadExitRequests();
+ for (Iterator iterator = threadExitRequests.iterator(); iterator.hasNext();) {
+ ThreadExitRequest request = (ThreadExitRequest) iterator.next();
if (request.isEnabled())
- eventSet.add(new ThreadExitEventImpl(vm,
- thread, request));
+ eventSet.add(new ThreadExitEventImpl(vm, thread, request));
}
}
}
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/META-INF/MANIFEST.MF
index 5244b5e..56e044c 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/META-INF/MANIFEST.MF
@@ -4,6 +4,6 @@
Bundle-SymbolicName: org.eclipse.e4.languages.javascript.debug.jsdi
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.e4.languages.javascript.jsdi;x-friends:="org.eclipse.e4.languages.javascript.debug.test",
+Export-Package: org.eclipse.e4.languages.javascript.jsdi,
org.eclipse.e4.languages.javascript.jsdi.event,
org.eclipse.e4.languages.javascript.jsdi.request
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/src/org/eclipse/e4/languages/javascript/jsdi/NaNValue.java b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/src/org/eclipse/e4/languages/javascript/jsdi/NaNValue.java
new file mode 100644
index 0000000..6c9da93
--- /dev/null
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/src/org/eclipse/e4/languages/javascript/jsdi/NaNValue.java
@@ -0,0 +1,5 @@
+package org.eclipse.e4.languages.javascript.jsdi;
+
+public interface NaNValue extends Value {
+
+}
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/src/org/eclipse/e4/languages/javascript/jsdi/VirtualMachine.java b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/src/org/eclipse/e4/languages/javascript/jsdi/VirtualMachine.java
index 271e13f..49fccb2 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/src/org/eclipse/e4/languages/javascript/jsdi/VirtualMachine.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.jsdi/src/org/eclipse/e4/languages/javascript/jsdi/VirtualMachine.java
@@ -91,6 +91,13 @@
public Value mirrorOfNull();
/**
+ * Returns a new {@link Value} that represents <code>NaN</code>
+ *
+ * @return a new <code>NaN</code> {@link Value}
+ */
+ public Value mirrorOfNaN();
+
+ /**
* Returns a new boolean {@link Value}
*
* @param bool
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/ContextData.java b/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/ContextData.java
index 22733d7..a1450bf 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/ContextData.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/ContextData.java
@@ -190,7 +190,7 @@
stepFrame = null;
} else {
// TODO NLS this
- throw new IllegalStateException("bad stepType: "+ stepType); //$NON-NLS-1$
+ throw new IllegalStateException("bad stepType: " + stepType); //$NON-NLS-1$
}
contextState = CONTEXT_RUNNING;
notifyAll();
@@ -260,6 +260,7 @@
EventPacket exceptionEvent = new EventPacket(JSONConstants.EXCEPTION);
Map body = exceptionEvent.getBody();
body.put(JSONConstants.CONTEXT_ID, contextId);
+ body.put(JSONConstants.THREAD_ID, threadId);
body.put(JSONConstants.SCRIPT_ID, script.getId());
body.put(JSONConstants.LINE_NUMBER, lineNumber);
body.put(JSONConstants.MESSAGE, ex.getMessage());
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/DebugFrameImpl.java b/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/DebugFrameImpl.java
index 25f0b04..948b6d6 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/DebugFrameImpl.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.rhino/src/org/eclipse/e4/languages/javascript/debug/rhino/DebugFrameImpl.java
@@ -256,6 +256,8 @@
serializeUndefined(result);
} else if (object == null) {
serializeNull(result);
+ } else if (object == ScriptRuntime.NaNobj) {
+ serializeNaN(result);
} else if (object instanceof Boolean) {
serializeSimpleType(object, JSONConstants.BOOLEAN, result);
} else if (object instanceof Number) {
@@ -293,6 +295,10 @@
result.put(JSONConstants.TYPE, JSONConstants.NULL);
}
+ private void serializeNaN(Map result) {
+ result.put(JSONConstants.TYPE, JSONConstants.NAN);
+ }
+
/**
* Serialize the given simple type
*
diff --git a/examples/sample.js.debugdisplay/scripts/script.js b/examples/sample.js.debugdisplay/scripts/script.js
index f1fba29..c26375c 100644
--- a/examples/sample.js.debugdisplay/scripts/script.js
+++ b/examples/sample.js.debugdisplay/scripts/script.js
@@ -9,5 +9,4 @@
var aPrintableObject = {x: 5, y: 25};
var aMap = {};
var anArray = [];
-var anArguments = arguments;
debugger;