import java.util.*;
import org.xwt.util.*;
-import org.mozilla.javascript.*;
/**
* A singleton class (one instance per JVM) that implements a queue
private static MessageQueueWatcher watcher = new MessageQueueWatcher();
// HACK for debugging purposes
- Function lastfunc = null;
+ Object lastfunc = null;
Message lastmessage = null;
/**
public MessageQueueWatcher() { start(); }
public void run() {
while(true) {
- if (m != null && m == MessageQueue.currentlyPerforming) {
- Context cx;
- String what;
- if (m instanceof ThreadMessage) {
- ThreadMessage tm = (ThreadMessage)m;
- cx = Context.getContextForThread(tm);
+ if ((m != null && m == MessageQueue.currentlyPerforming) || MessageQueue.working) {
+ String what, where;
+ if (m != null && m instanceof ThreadMessage) {
+ where = org.xwt.js.Context.getSourceNameAndLineForThread((ThreadMessage)m);
what = "background thread";
+ } else if (m != null) {
+ where = org.xwt.js.Context.getSourceNameAndLineForThread(MessageQueue.singleton);
+ what = "event trap";
} else {
- cx = Context.getContextForThread(MessageQueue.singleton);
+ where = org.xwt.js.Context.getSourceNameAndLineForThread(MessageQueue.singleton);
what = "script";
}
- if (Log.on) Log.log(this, "note: executing same " + what + " for " + (System.currentTimeMillis() - t) / 1000 + "s" +
- " at " + cx.interpreterSourceFile + ":" + cx.interpreterLine);
+ long howlong = (System.currentTimeMillis() - t) / 1000;
+ if (howlong >= 5)
+ if (Log.on) Log.log(this, "note: executing same " + what + " for " + howlong + "s" + " at " + where);
} else {
m = MessageQueue.currentlyPerforming;
t = System.currentTimeMillis();