| 
														
															@@ -601,33 +601,30 @@ AmberC.prototype.compose_js_files = function() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	var defineDefine = function () { 
														 | 
														
														 | 
														
															 	var defineDefine = function () { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		var path = require('path'); 
														 | 
														
														 | 
														
															 		var path = require('path'); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		var amdefine = $SRC$; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		var define = amdefine(module); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		var result = function () { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			var id = arguments[0]; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			setTimeout(function () { define.require(id); }, 0); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			return define.apply(this, arguments); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		}; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		result.amd = {}; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		return result; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return ($SRC$)(module); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	}; 
														 | 
														
														 | 
														
															 	}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	fileStream.write('var define = ('+(''+defineDefine).replace('$SRC$', ""+amdefine)+')();\n' 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	fileStream.write('var define = ('+(''+defineDefine).replace('$SRC$', ""+amdefine)+')(), requirejs = define.require;\n' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		+ 'define("amber_vm/browser-compatibility", [], {});\n'); 
														 | 
														
														 | 
														
															 		+ 'define("amber_vm/browser-compatibility", [], {});\n'); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	var ids = []; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	program_files.forEach(function(file) { 
														 | 
														
														 | 
														
															 	program_files.forEach(function(file) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if(fs.existsSync(file)) { 
														 | 
														
														 | 
														
															 		if(fs.existsSync(file)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			console.log('Adding : ' + file); 
														 | 
														
														 | 
														
															 			console.log('Adding : ' + file); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			fileStream.write(fs.readFileSync(file)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			var buffer = fs.readFileSync(file); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			var match = buffer.toString().match(/^define\("([^"]*)"/); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if (match /*&& match[1].slice(0,9) !== "amber_vm/"*/) { ids.push(match[1]); } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			fileStream.write(buffer); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} else { 
														 | 
														
														 | 
														
															 		} else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fileStream.end(); 
														 | 
														
														 | 
														
															 			fileStream.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			throw(new Error('Can not find file ' + file)); 
														 | 
														
														 | 
														
															 			throw(new Error('Can not find file ' + file)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	}); 
														 | 
														
														 | 
														
															 	}); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	fileStream.write('define("amber_vm/_init", ["amber_vm/smalltalk"], function (st) { st.initialize(); });\n'); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	fileStream.write('define("amber_vm/_init", ["amber_vm/smalltalk","'+ids.join('","')+'"], function (smalltalk) { smalltalk.initialize();\n'); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if (undefined !== defaults.main) { 
														 | 
														
														 | 
														
															 	if (undefined !== defaults.main) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		console.log('Adding call to: %s>>main', defaults.main); 
														 | 
														
														 | 
														
															 		console.log('Adding call to: %s>>main', defaults.main); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		fileStream.write('smalltalk.' + defaults.main + '._main()'); 
														 | 
														
														 | 
														
															 		fileStream.write('smalltalk.' + defaults.main + '._main()'); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	fileStream.write('});\nrequirejs("amber_vm/_init");\n'); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if (undefined !== defaults.mainfile && fs.existsSync(defaults.mainfile)) { 
														 | 
														
														 | 
														
															 	if (undefined !== defaults.mainfile && fs.existsSync(defaults.mainfile)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		console.log('Adding main file: ' + defaults.mainfile); 
														 | 
														
														 | 
														
															 		console.log('Adding main file: ' + defaults.mainfile); 
														 |