website/libs/handlebars.dev.js
function(paramSize, name, isRoot) {
				this.context.aliases.helperMissing = 'helpers.helperMissing';
				this.useRegister('helper');

				var helper = this.lastHelper = this.setupHelper(paramSize, name, true);
				var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');

				var lookup = 'helper = ' + helper.name + ' || ' + nonHelper;
				if (helper.paramsInit) {
					lookup += ',' + helper.paramsInit;
				}

				this.push(
					'('
						+ lookup
						+ ',helper '
						+ '? helper.call(' + helper.callParams + ') '
						+ ': helperMissing.call(' + helper.helperMissingParams + '))');

				// Always flush subexpressions. This is both to prevent the compounding size issue that
				// occurs when the code has to be duplicated for inlining and also to prevent errors
				// due to the incorrect options object being passed due to the shared register.
				if (!isRoot) {
					this.flushInline();
				}
			}
function(paramSize, name, isRoot) {
				this.context.aliases.helperMissing = 'helpers.helperMissing';
				this.useRegister('helper');

				var helper = this.lastHelper = this.setupHelper(paramSize, name, true);
				var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');

				var lookup = 'helper = ' + helper.name + ' || ' + nonHelper;
				if (helper.paramsInit) {
					lookup += ',' + helper.paramsInit;
				}

				this.push(
					'('
						+ lookup
						+ ',helper '
						+ '? helper.call(' + helper.callParams + ') '
						+ ': helperMissing.call(' + helper.helperMissingParams + '))');

				// Always flush subexpressions. This is both to prevent the compounding size issue that
				// occurs when the code has to be duplicated for inlining and also to prevent errors
				// due to the incorrect options object being passed due to the shared register.
				if (!isRoot) {
					this.flushInline();
				}
			}
[invokeHelper]  On stack, before: hash, inverse, program, params..., ... On stack, after: result of helper invocation  Pops off the helper's parameters, invokes the helper, and pushes the helper's return value onto the stack.  If the helper is not found, `helperMissing` is called.