private static Queue events = new Queue(50);
/** the number of objects in the queue that are not subclasses of ThreadMessage */
private static Queue events = new Queue(50);
/** the number of objects in the queue that are not subclasses of ThreadMessage */
private static MessageQueueWatcher watcher = new MessageQueueWatcher();
// HACK for debugging purposes
private static MessageQueueWatcher watcher = new MessageQueueWatcher();
// HACK for debugging purposes
if (Log.on) Log.log(this, "caught throwable in MessageQueue.run(); this should never happen");
if (Log.on) Log.log(this, " currentlyPerforming == " + currentlyPerforming);
if (Log.on) Log.log(this, " working == " + working);
if (Log.on) Log.log(this, "caught throwable in MessageQueue.run(); this should never happen");
if (Log.on) Log.log(this, " currentlyPerforming == " + currentlyPerforming);
if (Log.on) Log.log(this, " working == " + working);
- if (Log.on) Log.log(this, " lastfunc == " + lastfunc);
+ // FIXME - this currently calls compiledfunction.toString which gives more info than we need
+ // if (Log.on) Log.log(this, " lastfunc == " + lastfunc.getDescription());
if (Log.on) Log.log(this, " lastmessage == " + lastmessage);
if (Log.on) Log.log(this, t);
if (Log.on) Log.log(this, "resuming MessageQueue loop");
if (Log.on) Log.log(this, " lastmessage == " + lastmessage);
if (Log.on) Log.log(this, t);
if (Log.on) Log.log(this, "resuming MessageQueue loop");
- 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.JS.Thread.fromJavaThread((ThreadMessage)m).getSourceName();
- 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);