kopia lustrzana https://github.com/backface/turtlestitch
optimized HOF primitives to only assert input types once
rodzic
70e2e513bd
commit
cd0452f20c
|
@ -11,6 +11,9 @@
|
||||||
* removed "current" option from "switch to costume" block's drop-down menu
|
* removed "current" option from "switch to costume" block's drop-down menu
|
||||||
* **Translation Updates:**
|
* **Translation Updates:**
|
||||||
|
|
||||||
|
### 2019-10-30
|
||||||
|
* threads: optimized HOF primitives to only assert input types once
|
||||||
|
|
||||||
### 2019-10-29
|
### 2019-10-29
|
||||||
* threads: added support for counting down using the "numbers" reporter
|
* threads: added support for counting down using the "numbers" reporter
|
||||||
* morphic: improved canvas recycling
|
* morphic: improved canvas recycling
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<script type="text/javascript" src="src/blocks.js?version=2019-10-28"></script>
|
<script type="text/javascript" src="src/blocks.js?version=2019-10-28"></script>
|
||||||
<script type="text/javascript" src="src/threads.js?version=2019-10-29"></script>
|
<script type="text/javascript" src="src/threads.js?version=2019-10-29"></script>
|
||||||
<script type="text/javascript" src="src/objects.js?version=2019-10-29"></script>
|
<script type="text/javascript" src="src/objects.js?version=2019-10-29"></script>
|
||||||
<script type="text/javascript" src="src/gui.js?version=2019-10-28"></script>
|
<script type="text/javascript" src="src/gui.js?version=2019-10-30"></script>
|
||||||
<script type="text/javascript" src="src/paint.js?version=2019-06-27"></script>
|
<script type="text/javascript" src="src/paint.js?version=2019-06-27"></script>
|
||||||
<script type="text/javascript" src="src/lists.js?version=2019-10-23"></script>
|
<script type="text/javascript" src="src/lists.js?version=2019-10-23"></script>
|
||||||
<script type="text/javascript" src="src/byob.js?version=2019-07-24"></script>
|
<script type="text/javascript" src="src/byob.js?version=2019-07-24"></script>
|
||||||
|
|
|
@ -61,7 +61,7 @@ StageMorph, SpriteMorph, StagePrompterMorph, Note, modules, isString, copy,
|
||||||
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color,
|
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color,
|
||||||
TableFrameMorph, ColorSlotMorph, isSnapObject, Map, newCanvas, Symbol*/
|
TableFrameMorph, ColorSlotMorph, isSnapObject, Map, newCanvas, Symbol*/
|
||||||
|
|
||||||
modules.threads = '2019-October-29';
|
modules.threads = '2019-October-30';
|
||||||
|
|
||||||
var ThreadManager;
|
var ThreadManager;
|
||||||
var Process;
|
var Process;
|
||||||
|
@ -2184,16 +2184,16 @@ Process.prototype.doForEach = function (upvar, list, script) {
|
||||||
// Distinguish between linked and arrayed lists.
|
// Distinguish between linked and arrayed lists.
|
||||||
|
|
||||||
var next;
|
var next;
|
||||||
this.assertType(list, 'list');
|
|
||||||
if (this.context.accumulator === null) {
|
if (this.context.accumulator === null) {
|
||||||
this.context.accumulator = {
|
this.assertType(list, 'list');
|
||||||
source : list,
|
this.context.accumulator = {
|
||||||
remaining : list.length(),
|
source : list,
|
||||||
|
remaining : list.length(),
|
||||||
idx : 0
|
idx : 0
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (this.context.accumulator.remaining === 0) {
|
if (this.context.accumulator.remaining === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.context.accumulator.remaining -= 1;
|
this.context.accumulator.remaining -= 1;
|
||||||
if (this.context.accumulator.source.isLinked) {
|
if (this.context.accumulator.source.isLinked) {
|
||||||
|
@ -2268,9 +2268,9 @@ Process.prototype.reportMap = function (reporter, list) {
|
||||||
// #3 - optional | source list
|
// #3 - optional | source list
|
||||||
|
|
||||||
var next, index, parms;
|
var next, index, parms;
|
||||||
this.assertType(list, 'list');
|
|
||||||
if (list.isLinked) {
|
if (list.isLinked) {
|
||||||
if (this.context.accumulator === null) {
|
if (this.context.accumulator === null) {
|
||||||
|
this.assertType(list, 'list');
|
||||||
this.context.accumulator = {
|
this.context.accumulator = {
|
||||||
source : list,
|
source : list,
|
||||||
idx : 1,
|
idx : 1,
|
||||||
|
@ -2302,6 +2302,7 @@ Process.prototype.reportMap = function (reporter, list) {
|
||||||
this.context.accumulator.source = this.context.accumulator.source.cdr();
|
this.context.accumulator.source = this.context.accumulator.source.cdr();
|
||||||
} else { // arrayed
|
} else { // arrayed
|
||||||
if (this.context.accumulator === null) {
|
if (this.context.accumulator === null) {
|
||||||
|
this.assertType(list, 'list');
|
||||||
this.context.accumulator = [];
|
this.context.accumulator = [];
|
||||||
} else if (this.context.inputs.length > 2) {
|
} else if (this.context.inputs.length > 2) {
|
||||||
this.context.accumulator.push(this.context.inputs.pop());
|
this.context.accumulator.push(this.context.inputs.pop());
|
||||||
|
@ -2337,9 +2338,9 @@ Process.prototype.reportKeep = function (predicate, list) {
|
||||||
// #3 - optional | source list
|
// #3 - optional | source list
|
||||||
|
|
||||||
var next, index, parms;
|
var next, index, parms;
|
||||||
this.assertType(list, 'list');
|
|
||||||
if (list.isLinked) {
|
if (list.isLinked) {
|
||||||
if (this.context.accumulator === null) {
|
if (this.context.accumulator === null) {
|
||||||
|
this.assertType(list, 'list');
|
||||||
this.context.accumulator = {
|
this.context.accumulator = {
|
||||||
source : list,
|
source : list,
|
||||||
idx: 1,
|
idx: 1,
|
||||||
|
@ -2373,6 +2374,7 @@ Process.prototype.reportKeep = function (predicate, list) {
|
||||||
next = this.context.accumulator.source.at(1);
|
next = this.context.accumulator.source.at(1);
|
||||||
} else { // arrayed
|
} else { // arrayed
|
||||||
if (this.context.accumulator === null) {
|
if (this.context.accumulator === null) {
|
||||||
|
this.assertType(list, 'list');
|
||||||
this.context.accumulator = {
|
this.context.accumulator = {
|
||||||
idx : 0,
|
idx : 0,
|
||||||
target : []
|
target : []
|
||||||
|
@ -2416,9 +2418,9 @@ Process.prototype.reportFindFirst = function (predicate, list) {
|
||||||
// #3 - optional | source list
|
// #3 - optional | source list
|
||||||
|
|
||||||
var next, index, parms;
|
var next, index, parms;
|
||||||
this.assertType(list, 'list');
|
|
||||||
if (list.isLinked) {
|
if (list.isLinked) {
|
||||||
if (this.context.accumulator === null) {
|
if (this.context.accumulator === null) {
|
||||||
|
this.assertType(list, 'list');
|
||||||
this.context.accumulator = {
|
this.context.accumulator = {
|
||||||
source : list,
|
source : list,
|
||||||
idx : 1,
|
idx : 1,
|
||||||
|
@ -2444,6 +2446,7 @@ Process.prototype.reportFindFirst = function (predicate, list) {
|
||||||
next = this.context.accumulator.source.at(1);
|
next = this.context.accumulator.source.at(1);
|
||||||
} else { // arrayed
|
} else { // arrayed
|
||||||
if (this.context.accumulator === null) {
|
if (this.context.accumulator === null) {
|
||||||
|
this.assertType(list, 'list');
|
||||||
this.context.accumulator = {
|
this.context.accumulator = {
|
||||||
idx : 0,
|
idx : 0,
|
||||||
current : null
|
current : null
|
||||||
|
|
Ładowanie…
Reference in New Issue