if (tick_infobox.length == 0) {
tick_infobox.index = 0;
- tick_infobox.depth = 0;
return ret;
}
if (inTick) return;
if (infoBox[length] === 0) {
infoBox[index] = 0;
- infoBox[depth] = 0;
return;
}
inTick = true;
- while (infoBox[depth]++ < process.maxTickDepth) {
- nextTickLength = infoBox[length];
- if (infoBox[index] === nextTickLength)
- return tickDone(0);
-
- while (infoBox[index] < nextTickLength) {
- callback = nextTickQueue[infoBox[index]++].callback;
- threw = true;
- try {
- callback();
- threw = false;
- } finally {
- if (threw) tickDone(infoBox[depth]);
- }
+ while (infoBox[index] < infoBox[length]) {
+ callback = nextTickQueue[infoBox[index]++].callback;
+ threw = true;
+ try {
+ callback();
+ threw = false;
+ } finally {
+ if (threw) tickDone(0);
}
}
// on the way out, don't bother. it won't get fired anyway.
if (process._exiting)
return;
- if (infoBox[depth] >= process.maxTickDepth)
- maxTickWarn();
var obj = { callback: callback, domain: null };
tick 13
tick 12
tick 11
-(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
tick 10
tick 9
tick 8
tick 3
tick 2
tick 1
-(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
tick 0
+++ /dev/null
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-
-process.maxTickDepth = 10;
-process.traceDeprecation = true;
-var i = 20;
-process.nextTick(function f() {
- console.error('tick %d', i);
- if (i-- > 0)
- process.nextTick(f);
-});
+++ /dev/null
-tick 20
-tick 19
-tick 18
-tick 17
-tick 16
-tick 15
-tick 14
-tick 13
-tick 12
-tick 11
-Trace: (node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
- at maxTickWarn (node.js:*:*)
- at process.nextTick (node.js:*:*)
- at f (*test*message*max_tick_depth_trace.js:*:*)
- at process._tickCallback (node.js:*:*)
- at Function.Module.runMain (module.js:*:*)
- at startup (node.js:*:*)
- at node.js:*:*
-tick 10
-tick 9
-tick 8
-tick 7
-tick 6
-tick 5
-tick 4
-tick 3
-tick 2
-tick 1
-Trace: (node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
- at maxTickWarn (node.js:*:*)
- at process.nextTick (node.js:*:*)
- at f (*test*message*max_tick_depth_trace.js:*:*)
- at process._tickCallback (node.js:*:*)
- at process._tickFromSpinner (node.js:*:*)
-tick 0
+++ /dev/null
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var common = require('../common');
-var assert = require('assert');
-
-
-var ran = false;
-var stop = false;
-var start = +new Date();
-
-function spin() {
- var now = +new Date();
- if (now - start > 100) {
- throw new Error('The timer is starving');
- }
-
- if (!stop) {
- ran = true;
- process.nextTick(spin);
- }
-}
-
-function onTimeout() {
- stop = true;
-}
-
-spin();
-setTimeout(onTimeout, 50);
-
-process.on('exit', function() {
- assert.ok(ran);
- assert.ok(stop);
-});