Merge commit 'origin/master'

This commit is contained in:
Danny Yoo 2012-02-19 18:28:22 -05:00
commit 5f3f94a8ae
4 changed files with 21 additions and 11 deletions

View File

@ -45,6 +45,9 @@
'make-vector 'make-vector
'equal? 'equal?
'member 'member
'memq
'memv
'memf
'append 'append
'reverse 'reverse
'length 'length

View File

@ -137,14 +137,20 @@
MACHINE.exclusiveLock.acquire( MACHINE.exclusiveLock.acquire(
"js-as-closure", "js-as-closure",
function(releaseLock) { function(releaseLock) {
succ = succ || function () {}; var wrappedSucc = function() {
fail = fail || function () {}; releaseLock();
(succ || function () {}).apply(null, arguments);
};
var wrappedFail = function(err) {
releaseLock();
(fail || function () {})(err);
};
if (!(baselib.arity.isArityMatching(v.racketArity, args.length - 2))) { if (!(baselib.arity.isArityMatching(v.racketArity, args.length - 2))) {
var msg = baselib.format.format( var msg = baselib.format.format(
"arity mismatch: ~s expected ~s argument(s) but received ~s", "arity mismatch: ~s expected ~s argument(s) but received ~s",
[v.displayName, v.racketArity, args.length - 2]); [v.displayName, v.racketArity, args.length - 2]);
releaseLock(); releaseLock();
return fail(new baselib.exceptions.RacketError( return wrappedFail(new baselib.exceptions.RacketError(
msg, msg,
baselib.exceptions.makeExnFailContractArity(msg, baselib.exceptions.makeExnFailContractArity(msg,
MACHINE.captureContinuationMarks()))); MACHINE.captureContinuationMarks())));
@ -163,7 +169,7 @@
MACHINE.v = oldVal; MACHINE.v = oldVal;
MACHINE.a = oldArgcount; MACHINE.a = oldArgcount;
MACHINE.p = oldProc; MACHINE.p = oldProc;
succ(returnValue); wrappedSucc(returnValue);
}); });
}; };
afterGoodInvoke.mvr = function (MACHINE) { afterGoodInvoke.mvr = function (MACHINE) {
@ -177,7 +183,7 @@
MACHINE.v = oldVal; MACHINE.v = oldVal;
MACHINE.a = oldArgcount; MACHINE.a = oldArgcount;
MACHINE.p = oldProc; MACHINE.p = oldProc;
succ.apply(null, returnValues); wrappedSucc.apply(null, returnValues);
}); });
}; };
@ -194,7 +200,7 @@
MACHINE.v = oldVal; MACHINE.v = oldVal;
MACHINE.a = oldArgcount; MACHINE.a = oldArgcount;
MACHINE.p = oldProc; MACHINE.p = oldProc;
fail(e); wrappedFail(e);
}; };
MACHINE._trampoline(v.label, false, releaseLock); MACHINE._trampoline(v.label, false, releaseLock);
@ -217,8 +223,8 @@
baselib.exceptions.raise(MACHINE, baselib.exceptions.raise(MACHINE,
baselib.exceptions.makeExnFailContract( baselib.exceptions.makeExnFailContract(
baselib.format.format( baselib.format.format(
"Not a procedure: ~e", "not a procedure: ~e",
v), [v]),
MACHINE.captureContinuationMarks())); MACHINE.captureContinuationMarks()));
} }
}; };
@ -248,7 +254,7 @@
fail(baselib.exceptions.makeExnFail( fail(baselib.exceptions.makeExnFail(
baselib.format.format( baselib.format.format(
"Not a procedure: ~e", "Not a procedure: ~e",
proc), [proc]),
MACHINE.captureContinuationMarks())); MACHINE.captureContinuationMarks()));
} }

View File

@ -103,7 +103,7 @@
'caarable value'); 'caarable value');
var checkCadrPair = baselib.check.makeCheckArgumentType( var checkCadrPair = baselib.check.makeCheckArgumentType(
function(x) { function(x) {
return isPair(x) && isPair(x.first); return isPair(x) && isPair(x.rest);
}, },
'cadrable value'); 'cadrable value');
var checkList = baselib.check.checkList; var checkList = baselib.check.checkList;
@ -615,7 +615,7 @@
1, 1,
function (M) { function (M) {
var firstArg = checkCadrPair(M, 'cadr', 0); var firstArg = checkCadrPair(M, 'cadr', 0);
return firstArg.first.rest; return firstArg.rest.first;
}); });
installPrimitiveProcedure( installPrimitiveProcedure(

View File

@ -100,6 +100,7 @@
if if
cond cond
else else
=>
case case
quote quote
unquote unquote