website/libs/handlebars.dev.js
function(name, helperCall) {
				this.context.aliases.functionType = '"function"';
				this.useRegister('helper');

				this.emptyHash();
				var helper = this.setupHelper(0, name, helperCall);

				var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');

				var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
				var nextStack = this.nextStack();

				if (helper.paramsInit) {
					this.pushSource(helper.paramsInit);
				}
				this.pushSource('if (helper = ' + helperName + ') { ' + nextStack + ' = helper.call(' + helper.callParams + '); }');
				this.pushSource('else { helper = ' + nonHelper + '; ' + nextStack + ' = typeof helper === functionType ? helper.call(' + helper.callParams + ') : helper; }');
			}
function(name, helperCall) {
				this.context.aliases.functionType = '"function"';
				this.useRegister('helper');

				this.emptyHash();
				var helper = this.setupHelper(0, name, helperCall);

				var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');

				var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
				var nextStack = this.nextStack();

				if (helper.paramsInit) {
					this.pushSource(helper.paramsInit);
				}
				this.pushSource('if (helper = ' + helperName + ') { ' + nextStack + ' = helper.call(' + helper.callParams + '); }');
				this.pushSource('else { helper = ' + nonHelper + '; ' + nextStack + ' = typeof helper === functionType ? helper.call(' + helper.callParams + ') : helper; }');
			}
function ( name , helperCall ) { this . context . aliases . functionType = '"function"' ; this . useRegister ( 'helper' ) ; this . emptyHash ( ) ; var helper = this . setupHelper ( 0 , name , helperCall ) ; var helperName = this . lastHelper = this . nameLookup ( 'helpers' , name , 'helper' ) ; var nonHelper = this . nameLookup ( 'depth' + this . lastContext , name , 'context' ) ; var nextStack = this . nextStack ( ) ; if ( helper . paramsInit ) { this . pushSource ( helper . paramsInit ) ; } this . pushSource ( 'if (helper = ' + helperName + ') { ' + nextStack + ' = helper.call(' + helper . callParams + '); }' ) ; this . pushSource ( 'else { helper = ' + nonHelper + '; ' + nextStack + ' = typeof helper === functionType ? helper.call(' + helper . callParams + ') : helper; }' ) ; }
[invokeAmbiguous]  On stack, before: hash, inverse, program, params..., ... On stack, after: result of disambiguation  This operation is used when an expression like `{{foo}}` is provided, but we don't know at compile-time whether it is a helper or a path.  This operation emits more code than the other options, and can be avoided by passing the `knownHelpers` and `knownHelpersOnly` flags at compile-time.
[ invokeAmbiguous ] On stack before : hash inverse program params ... ... On stack after : result of disambiguation This operation is used when an expression like {{ foo }} is provided but we don t know at compile - time whether it is a helper or a path . This operation emits more code than the other options and can be avoided by passing the knownHelpers and knownHelpersOnly flags at compile - time .