removing debug messages; adjusting the numeric tower to send errors it sees to the current machine

This commit is contained in:
Danny Yoo 2012-03-15 16:53:47 -04:00
parent 2d7de1f256
commit 3a7507bab9
6 changed files with 29 additions and 34 deletions

View File

@ -69,12 +69,13 @@
e = new RacketError(Exn.accessor(e, 0), e); e = new RacketError(Exn.accessor(e, 0), e);
} }
if (window.console !== void(0) && // if (window.console !== void(0) &&
typeof(window.console.log) === 'function') { // typeof(window.console.log) === 'function') {
window.console.log(MACHINE); // window.console.log(MACHINE);
if (e.stack) { window.console.log(e.stack); } // if (e.stack) { window.console.log(e.stack); }
else { window.console.log(e); } // else { window.console.log(e); }
} // }
throw e; throw e;
}; };
@ -89,6 +90,10 @@
raise(MACHINE, ExnFailContract.constructor([msg, contMarks])); raise(MACHINE, ExnFailContract.constructor([msg, contMarks]));
}; };
var raiseDivisionByZeroError = function(MACHINE, msg) {
var contMarks = MACHINE.captureContinuationMarks();
raise(MACHINE, ExnFailContractDivisionByZero.constructor([msg, contMarks]));
};
var raiseUnboundToplevelError = function(MACHINE, name) { var raiseUnboundToplevelError = function(MACHINE, name) {
@ -234,6 +239,7 @@
exceptions.raise = raise; exceptions.raise = raise;
exceptions.raiseFailure = raiseFailure; exceptions.raiseFailure = raiseFailure;
exceptions.raiseContractError = raiseContractError; exceptions.raiseContractError = raiseContractError;
exceptions.raiseDivisionByZeroError = raiseDivisionByZeroError;
exceptions.raiseUnboundToplevelError = raiseUnboundToplevelError; exceptions.raiseUnboundToplevelError = raiseUnboundToplevelError;
exceptions.raiseArgumentTypeError = raiseArgumentTypeError; exceptions.raiseArgumentTypeError = raiseArgumentTypeError;
exceptions.raiseContextExpectedValuesError = raiseContextExpectedValuesError; exceptions.raiseContextExpectedValuesError = raiseContextExpectedValuesError;

View File

@ -9,6 +9,16 @@
// Set the numeric tower to raise errors through our mechanism.
jsnums.onThrowRuntimeError = function(msg, x, y) {
if (msg === '/: division by zero') {
baselib.exceptions.raiseDivisionByZeroError(plt.runtime.currentMachine, msg);
} else {
baselib.exceptions.raiseContractError(plt.runtime.currentMachine, msg);
}
};
var isNumber = jsnums.isSchemeNumber; var isNumber = jsnums.isSchemeNumber;
var isReal = jsnums.isReal; var isReal = jsnums.isReal;
var isRational = jsnums.isRational; var isRational = jsnums.isRational;

View File

@ -63,9 +63,12 @@
// Exceptions and error handling. // Exceptions and error handling.
var raise = baselib.exceptions.raise; var raise = baselib.exceptions.raise;
var raiseContractError = baselib.exceptions.raiseContractError; var raiseContractError = baselib.exceptions.raiseContractError;
var raiseDivisionByZeroError = baselib.exceptions.raiseDivisionByZeroError;
var raiseArgumentTypeError = baselib.exceptions.raiseArgumentTypeError; var raiseArgumentTypeError = baselib.exceptions.raiseArgumentTypeError;
var raiseArityMismatchError = baselib.exceptions.raiseArityMismatchError; var raiseArityMismatchError = baselib.exceptions.raiseArityMismatchError;
var testArgument = baselib.check.testArgument; var testArgument = baselib.check.testArgument;
var checkOutputPort = baselib.check.checkOutputPort; var checkOutputPort = baselib.check.checkOutputPort;

View File

@ -197,7 +197,6 @@
this.alreadyReleased = false; this.alreadyReleased = false;
if (this.locked === false) { if (this.locked === false) {
console.log("lock is clear. Grabbing...");
this.locked = id; this.locked = id;
onAcquire.call( onAcquire.call(
that, that,
@ -218,14 +217,12 @@
waiter = that.waiters.shift(); waiter = that.waiters.shift();
setTimeout( setTimeout(
function() { function() {
console.log("trying to re-acquire lock...");
that.acquire(waiter.id, waiter.onAcquire); that.acquire(waiter.id, waiter.onAcquire);
}, },
0); 0);
} }
}); });
} else { } else {
console.log("lock is currently in play. Need to wait.");
this.waiters.push({ id: id, this.waiters.push({ id: id,
onAcquire: onAcquire } ); onAcquire: onAcquire } );
} }
@ -584,7 +581,6 @@
}); });
}; };
var internalCall = function(proc, success, fail) { var internalCall = function(proc, success, fail) {
console.log("internalCall");
var i; var i;
if (restarted) { if (restarted) {
return; return;
@ -593,20 +589,15 @@
for (i = 3; i < arguments.length; i++) { for (i = 3; i < arguments.length; i++) {
args.push(arguments[i]); args.push(arguments[i]);
} }
console.log("acquiring lock...");
pauseLock.acquire( pauseLock.acquire(
void(0), void(0),
function(release) { function(release) {
var newSuccess = function() { var newSuccess = function() {
console.log('newSuccess', arguments, proc, success);
success.apply(null, arguments); success.apply(null, arguments);
console.log("releasing lock...");
release(); release();
}; };
var newFail = function() { var newFail = function() {
console.log('newFail', arguments, proc, fail);
fail.apply(null, arguments); fail.apply(null, arguments);
console.log("releasing lock...");
release(); release();
}; };
baselib.functions.internalCallDuringPause.apply( baselib.functions.internalCallDuringPause.apply(
@ -624,9 +615,7 @@
// General error condition: just exit out // General error condition: just exit out
// of the trampoline and call the current error handler. // of the trampoline and call the current error handler.
that.running = false; that.running = false;
console.log("calling current error handler", that.params.currentErrorHandler);
that.params.currentErrorHandler(that, e); that.params.currentErrorHandler(that, e);
console.log("releasing");
release(); release();
return; return;
} }

View File

@ -5,5 +5,5 @@
(big-bang (list 'undefined 'undefined) (big-bang (list 'undefined 'undefined)
(on-geo (lambda (w v lat #;lng) (on-geo (lambda (w v lat lng)
(list lat #;lng)))) (list lat lng))))

View File

@ -1198,7 +1198,6 @@
dispatchEventsInQueue, refreshView; dispatchEventsInQueue, refreshView;
onCleanRestart = function() { onCleanRestart = function() {
console.log('on clean restart');
running = false; running = false;
stopEventHandlers( stopEventHandlers(
function() { function() {
@ -1211,16 +1210,12 @@
}; };
onMessyRestart = function(exn) { onMessyRestart = function(exn) {
console.log('on messy restart');
running = false; running = false;
console.log('stopping the event handlers');
stopEventHandlers( stopEventHandlers(
function() { function() {
console.log('event handlers stopped');
restart(function(MACHINE) { restart(function(MACHINE) {
currentBigBangRecord = oldCurrentBigBangRecord; currentBigBangRecord = oldCurrentBigBangRecord;
MACHINE.params.currentOutputPort = oldOutputPort; MACHINE.params.currentOutputPort = oldOutputPort;
console.log('about to raise');
plt.baselib.exceptions.raise(MACHINE, exn); plt.baselib.exceptions.raise(MACHINE, exn);
}); });
}); });
@ -1257,7 +1252,6 @@
dispatchEventsInQueue = function(success, fail) { dispatchEventsInQueue = function(success, fail) {
console.log("dispatchEventsInQueue");
// Apply all the events on the queue, call toDraw, and then stop. // Apply all the events on the queue, call toDraw, and then stop.
// If the world ever satisfies stopWhen, stop immediately and quit. // If the world ever satisfies stopWhen, stop immediately and quit.
var nextEvent; var nextEvent;
@ -1278,7 +1272,6 @@
args = nextEvent.data.slice(0); args = nextEvent.data.slice(0);
var onGoodWorldUpdate = var onGoodWorldUpdate =
function (newWorld) { function (newWorld) {
console.log("good world update");
world = newWorld; world = newWorld;
stopWhen(internalCall, stopWhen(internalCall,
world, world,
@ -1294,29 +1287,23 @@
fail); fail);
}; };
if (isArityMatching(racketWorldCallback.racketArity, 1)) { if (isArityMatching(racketWorldCallback.racketArity, 1)) {
console.log("arity match 1");
racketWorldCallback(internalCall, racketWorldCallback(internalCall,
world, world,
onGoodWorldUpdate, onGoodWorldUpdate,
fail); fail);
} else if (isArityMatching(racketWorldCallback.racketArity, 2)) { } else if (isArityMatching(racketWorldCallback.racketArity, 2)) {
console.log("arity match 2");
racketWorldCallback(internalCall, racketWorldCallback(internalCall,
world, world,
mockView, mockView,
onGoodWorldUpdate, onGoodWorldUpdate,
fail); fail);
} else { //if (isArityMatching(racketWorldCallback.racketArity, 2 + args.length)){ } else {
console.log("arity match 3");
args = ([internalCall, world, mockView] args = ([internalCall, world, mockView]
.concat(args) .concat(args)
.concat([onGoodWorldUpdate, fail])); .concat([onGoodWorldUpdate, fail]));
racketWorldCallback.apply(null, args); racketWorldCallback.apply(null, args);
}// else { }
// fail(makeArityMismatchError(MACHINE, racketWorldCallback, 2+args.length));
// }
} else { } else {
console.log("dispatched all events");
dispatchingEvents = false; dispatchingEvents = false;
success(); success();
} }