trying to reduce allocation to shave off a second from iron puzzle
This commit is contained in:
parent
a23e117b6d
commit
9ed5898c1f
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
var colorNamespace = MACHINE.modules['whalesong/image/private/color.rkt'].namespace;
|
var colorNamespace = MACHINE.modules['whalesong/image/private/color.rkt'].namespace;
|
||||||
var colorStruct = colorNamespace['struct:color'];
|
var colorStruct = colorNamespace['struct:color'];
|
||||||
var makeColor = colorStruct.constructor;
|
var makeColor = function(r,g,b,a) { return colorStruct.constructor([r,g,b,a]); };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
var colorNamespace = MACHINE.modules['whalesong/image/private/color.rkt'].namespace;
|
var colorNamespace = MACHINE.modules['whalesong/image/private/color.rkt'].namespace;
|
||||||
var colorStruct = colorNamespace['struct:color'];
|
var colorStruct = colorNamespace['struct:color'];
|
||||||
var makeColor = colorStruct.constructor;
|
var makeColor = function(r,g,b,a) { return colorStruct.constructor([r,g,b,a]); };
|
||||||
var isColor = colorStruct.predicate;
|
var isColor = colorStruct.predicate;
|
||||||
var colorRed = function(c) { return colorStruct.accessor(c, 0); };
|
var colorRed = function(c) { return colorStruct.accessor(c, 0); };
|
||||||
var colorGreen = function(c) { return colorStruct.accessor(c, 1); };
|
var colorGreen = function(c) { return colorStruct.accessor(c, 1); };
|
||||||
|
|
|
@ -57,7 +57,10 @@
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
exports.ArityAtLeast = ArityAtLeast;
|
exports.ArityAtLeast = ArityAtLeast;
|
||||||
exports.makeArityAtLeast = ArityAtLeast.constructor;
|
exports.makeArityAtLeast = function() {
|
||||||
|
var args = [].slice.call(arguments);
|
||||||
|
return ArityAtLeast.constructor(args);
|
||||||
|
};
|
||||||
exports.isArityAtLeast = isArityAtLeast;
|
exports.isArityAtLeast = isArityAtLeast;
|
||||||
exports.isArityMatching = isArityMatching;
|
exports.isArityMatching = isArityMatching;
|
||||||
exports.arityAtLeastValue = arityAtLeastValue;
|
exports.arityAtLeastValue = arityAtLeastValue;
|
||||||
|
|
|
@ -120,10 +120,10 @@
|
||||||
baselib.exceptions.raise(
|
baselib.exceptions.raise(
|
||||||
MACHINE,
|
MACHINE,
|
||||||
baselib.exceptions.ExnFailContractArity.constructor(
|
baselib.exceptions.ExnFailContractArity.constructor(
|
||||||
callerName + ": expected at least " + minimum
|
[callerName + ": expected at least " + minimum
|
||||||
+ " arguments "
|
+ " arguments "
|
||||||
+ " but received " + observed,
|
+ " but received " + observed,
|
||||||
MACHINE.captureContinuationMarks()));
|
MACHINE.captureContinuationMarks()]));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -81,12 +81,12 @@
|
||||||
|
|
||||||
var raiseFailure = function(MACHINE, msg) {
|
var raiseFailure = function(MACHINE, msg) {
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE, ExnFail.constructor(msg, contMarks));
|
raise(MACHINE, ExnFail.constructor([msg, contMarks]));
|
||||||
};
|
};
|
||||||
|
|
||||||
var raiseContractError = function(MACHINE, msg) {
|
var raiseContractError = function(MACHINE, msg) {
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE, ExnFailContract.constructor(msg, contMarks));
|
raise(MACHINE, ExnFailContract.constructor([msg, contMarks]));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,9 +95,9 @@
|
||||||
var message = baselib.format.format("Not bound: ~a", [name]);
|
var message = baselib.format.format("Not bound: ~a", [name]);
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE,
|
raise(MACHINE,
|
||||||
ExnFailContractVariable.constructor(message,
|
ExnFailContractVariable.constructor([message,
|
||||||
contMarks,
|
contMarks,
|
||||||
baselib.symbols.makeSymbol(name)));
|
baselib.symbols.makeSymbol(name)]));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -115,14 +115,14 @@
|
||||||
expectedTypeName,
|
expectedTypeName,
|
||||||
(argumentOffset + 1),
|
(argumentOffset + 1),
|
||||||
actualValue]);
|
actualValue]);
|
||||||
raise(MACHINE, ExnFailContract.constructor(message, contMarks));
|
raise(MACHINE, ExnFailContract.constructor([message, contMarks]));
|
||||||
} else {
|
} else {
|
||||||
message = baselib.format.format(
|
message = baselib.format.format(
|
||||||
"~a: expected ~a but received ~e",
|
"~a: expected ~a but received ~e",
|
||||||
[callerName,
|
[callerName,
|
||||||
expectedTypeName,
|
expectedTypeName,
|
||||||
actualValue]);
|
actualValue]);
|
||||||
raise(MACHINE, ExnFailContract.constructor(message, contMarks));
|
raise(MACHINE, ExnFailContract.constructor([message, contMarks]));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
var message = baselib.format.format("expected ~e values, received ~e values",
|
var message = baselib.format.format("expected ~e values, received ~e values",
|
||||||
[expected, MACHINE.a]);
|
[expected, MACHINE.a]);
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE, ExnFailContract.constructor(message, contMarks));
|
raise(MACHINE, ExnFailContract.constructor([message, contMarks]));
|
||||||
};
|
};
|
||||||
|
|
||||||
var raiseArityMismatchError = function(MACHINE, proc, received) {
|
var raiseArityMismatchError = function(MACHINE, proc, received) {
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
proc.racketArity,
|
proc.racketArity,
|
||||||
received]);
|
received]);
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE, ExnFailContractArity.constructor(message, contMarks));
|
raise(MACHINE, ExnFailContractArity.constructor([message, contMarks]));
|
||||||
};
|
};
|
||||||
|
|
||||||
var raiseOperatorApplicationError = function(MACHINE, operator) {
|
var raiseOperatorApplicationError = function(MACHINE, operator) {
|
||||||
|
@ -147,7 +147,7 @@
|
||||||
[operator]);
|
[operator]);
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE,
|
raise(MACHINE,
|
||||||
ExnFailContract.constructor(message, contMarks));
|
ExnFailContract.constructor([message, contMarks]));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@
|
||||||
[operator]);
|
[operator]);
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE,
|
raise(MACHINE,
|
||||||
ExnFailContract.constructor(message, contMarks));
|
ExnFailContract.constructor([message, contMarks]));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
var message = "unimplemented kernel procedure: " + name;
|
var message = "unimplemented kernel procedure: " + name;
|
||||||
var contMarks = MACHINE.captureContinuationMarks();
|
var contMarks = MACHINE.captureContinuationMarks();
|
||||||
raise(MACHINE,
|
raise(MACHINE,
|
||||||
ExnFailContract.constructor(message, contMarks));
|
ExnFailContract.constructor([message, contMarks]));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -184,32 +184,32 @@
|
||||||
exceptions.isRacketError = isRacketError;
|
exceptions.isRacketError = isRacketError;
|
||||||
|
|
||||||
exceptions.Exn = Exn;
|
exceptions.Exn = Exn;
|
||||||
exceptions.makeExn = Exn.constructor;
|
exceptions.makeExn = function(msg, marks) { return Exn.constructor([msg, marks]); };
|
||||||
exceptions.isExn = Exn.predicate;
|
exceptions.isExn = Exn.predicate;
|
||||||
exceptions.exnMessage = function(exn) { return Exn.accessor(exn, 0); };
|
exceptions.exnMessage = function(exn) { return Exn.accessor(exn, 0); };
|
||||||
exceptions.exnContMarks = function(exn) { return Exn.accessor(exn, 1); };
|
exceptions.exnContMarks = function(exn) { return Exn.accessor(exn, 1); };
|
||||||
exceptions.exnSetContMarks = function(exn, v) { Exn.mutator(exn, 1, v); };
|
exceptions.exnSetContMarks = function(exn, v) { Exn.mutator(exn, 1, v); };
|
||||||
|
|
||||||
exceptions.ExnBreak = ExnBreak;
|
exceptions.ExnBreak = ExnBreak;
|
||||||
exceptions.makeExnBreak = ExnBreak.constructor;
|
exceptions.makeExnBreak = function(msg, marks) { return ExnBreak.constructor([msg, marks]); };
|
||||||
exceptions.isExnBreak = ExnBreak.predicate;
|
exceptions.isExnBreak = ExnBreak.predicate;
|
||||||
exceptions.exnBreakContinuation =
|
exceptions.exnBreakContinuation =
|
||||||
function(exn) { return ExnBreak.accessor(exn, 0); };
|
function(exn) { return ExnBreak.accessor(exn, 0); };
|
||||||
|
|
||||||
exceptions.ExnFail = ExnFail;
|
exceptions.ExnFail = ExnFail;
|
||||||
exceptions.makeExnFail = ExnFail.constructor;
|
exceptions.makeExnFail = function(msg, marks) { return ExnFail.constructor([msg, marks]); };
|
||||||
exceptions.isExnFail = ExnFail.predicate;
|
exceptions.isExnFail = ExnFail.predicate;
|
||||||
|
|
||||||
exceptions.ExnFailContract = ExnFailContract;
|
exceptions.ExnFailContract = ExnFailContract;
|
||||||
exceptions.makeExnFailContract = ExnFailContract.constructor;
|
exceptions.makeExnFailContract = function(msg, marks) { return ExnFailContract.constructor([msg, marks]); };
|
||||||
exceptions.isExnFailContract = ExnFailContract.predicate;
|
exceptions.isExnFailContract = ExnFailContract.predicate;
|
||||||
|
|
||||||
exceptions.ExnFailContractArity = ExnFailContractArity;
|
exceptions.ExnFailContractArity = ExnFailContractArity;
|
||||||
exceptions.makeExnFailContractArity = ExnFailContractArity.constructor;
|
exceptions.makeExnFailContractArity = function(msg, marks) { return ExnFailContractArity.constructor([msg, marks]); };
|
||||||
exceptions.isExnFailContractArity = ExnFailContractArity.predicate;
|
exceptions.isExnFailContractArity = ExnFailContractArity.predicate;
|
||||||
|
|
||||||
exceptions.ExnFailContractVariable = ExnFailContractVariable;
|
exceptions.ExnFailContractVariable = ExnFailContractVariable;
|
||||||
exceptions.makeExnFailContractVariable = ExnFailContractVariable.constructor;
|
exceptions.makeExnFailContractVariable = function(msg, marks) { return ExnFailContractVariable.constructor([msg, marks]); };
|
||||||
exceptions.isExnFailContractVariable = ExnFailContractVariable.predicate;
|
exceptions.isExnFailContractVariable = ExnFailContractVariable.predicate;
|
||||||
exceptions.exnFailContractVariableId =
|
exceptions.exnFailContractVariableId =
|
||||||
function(exn) { return ExnFailContractVariable.accessor(exn, 0); };
|
function(exn) { return ExnFailContractVariable.accessor(exn, 0); };
|
||||||
|
@ -217,7 +217,7 @@
|
||||||
|
|
||||||
exceptions.ExnFailContractDivisionByZero = ExnFailContractDivisionByZero;
|
exceptions.ExnFailContractDivisionByZero = ExnFailContractDivisionByZero;
|
||||||
exceptions.makeExnFailContractDivisionByZero =
|
exceptions.makeExnFailContractDivisionByZero =
|
||||||
ExnFailContractDivisionByZero.constructor;
|
function(msg, marks) { return ExnFailContractDivisionByZero.constructor([msg, marks]); };
|
||||||
exceptions.isExnFailContractDivisionByZero = ExnFailContractDivisionByZero.predicate;
|
exceptions.isExnFailContractDivisionByZero = ExnFailContractDivisionByZero.predicate;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2250,7 +2250,7 @@
|
||||||
initFieldCount + (superType ? superType.numberOfArgs : 0),
|
initFieldCount + (superType ? superType.numberOfArgs : 0),
|
||||||
function (M) {
|
function (M) {
|
||||||
var args = M.e.slice(M.e.length - M.a).reverse();
|
var args = M.e.slice(M.e.length - M.a).reverse();
|
||||||
return structType.constructor.apply(null, args);
|
return structType.constructor(args);
|
||||||
});
|
});
|
||||||
|
|
||||||
var predicateValue =
|
var predicateValue =
|
||||||
|
|
|
@ -9,7 +9,10 @@
|
||||||
var srcloc = baselib.structs.makeStructureType(
|
var srcloc = baselib.structs.makeStructureType(
|
||||||
'srcloc', false, 5, 0, false, false);
|
'srcloc', false, 5, 0, false, false);
|
||||||
|
|
||||||
var makeSrcloc = srcloc.constructor;
|
var makeSrcloc = function() {
|
||||||
|
var args = [].slice.call(arguments);
|
||||||
|
return srcloc.constructor(args);
|
||||||
|
};
|
||||||
|
|
||||||
var isSrcloc = srcloc.predicate;
|
var isSrcloc = srcloc.predicate;
|
||||||
var srclocSource = function(x) { return srcloc.accessor(x, 0); };
|
var srclocSource = function(x) { return srcloc.accessor(x, 0); };
|
||||||
|
|
|
@ -184,6 +184,11 @@
|
||||||
// Set type, necessary for equality checking
|
// Set type, necessary for equality checking
|
||||||
RawConstructor.prototype.type = RawConstructor;
|
RawConstructor.prototype.type = RawConstructor;
|
||||||
|
|
||||||
|
|
||||||
|
var constructAfterGuard = function (res) {
|
||||||
|
return new RawConstructor(theName, res, newType);
|
||||||
|
};
|
||||||
|
|
||||||
// The structure type consists of the name, its constructor, a
|
// The structure type consists of the name, its constructor, a
|
||||||
// record of how many argument it and its parent type contains,
|
// record of how many argument it and its parent type contains,
|
||||||
// the list of autofields, the guard, and functions corresponding
|
// the list of autofields, the guard, and functions corresponding
|
||||||
|
@ -206,13 +211,11 @@
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// constructor
|
// constructor
|
||||||
function () {
|
function (args) {
|
||||||
var args = [].slice.call(arguments);
|
|
||||||
return newType.applyGuard(
|
return newType.applyGuard(
|
||||||
args,
|
args,
|
||||||
baselib.symbols.Symbol.makeInstance(theName),
|
baselib.symbols.Symbol.makeInstance(theName),
|
||||||
function (res) {
|
constructAfterGuard);
|
||||||
return new RawConstructor(theName, res, newType); });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// predicate
|
// predicate
|
||||||
|
|
|
@ -891,7 +891,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return eventStructType.constructor(result);
|
return eventStructType.constructor([result]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user