| 
					
				 | 
			
			
				@@ -38,16 +38,17 @@ function createConcatenator () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		start: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			this.add( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				'var define = (' + require('amdefine') + ')(null, function (id) { throw new Error("Dependency not found: " +  id); }), requirejs = define.require;', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'define("amber_vm/browser-compatibility", [], {});' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'define("amber_vm/browser-compatibility", [], {});', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'define("amber/browser-compatibility", [], {});' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		finish: function (realWork) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			this.add( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'define("amber_vm/_init", ["amber_vm/smalltalk", "amber_vm/globals", "' + this.ids.join('","') + '"], function (vm, globals) {', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'vm.initialize();', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'define("amber/_init", ["' + this.ids.join('","') + '"], function (boot) {', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'boot.vm.initialize();', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				realWork, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				'});', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'requirejs("amber_vm/_init");' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'requirejs("amber/_init");' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		toString: function () { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -71,6 +72,7 @@ function AmberCompiler(amber_dir) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	this.amber_dir = amber_dir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Important: in next list, boot MUST be first 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	this.kernel_libraries = ['boot', 'smalltalk', 'globals', 'nil', '_st', 'Kernel-Objects', 'Kernel-Classes', 'Kernel-Methods', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							'Kernel-Collections', 'Kernel-Infrastructure', 'Kernel-Exceptions', 'Kernel-Transcript', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							'Kernel-Announcements']; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -120,6 +122,7 @@ AmberCompiler.prototype.main = function(configuration, finished_callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (undefined !== configuration.jsLibraryDirs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		configuration.jsLibraryDirs.push(path.join(this.amber_dir, 'src')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		configuration.jsLibraryDirs.push(path.join(this.amber_dir, 'support')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		configuration.jsLibraryDirs.push(path.join(this.amber_dir, 'support', 'deprecated-vm-files')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	console.ambercLog = console.log; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -325,9 +328,9 @@ function create_compiler(configuration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// data is an array where index 0 is the error code and index 1 contains the data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			builder.add(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// matches and returns the "module_id" string in the AMD definition: define("module_id", ...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			var match = ('' + data).match(/^define\("([^"]*)"/); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var match = ('' + data).match(/(^|\n)define\("([^"]*)"/); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (match) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				builder.addId(match[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				builder.addId(match[2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -362,8 +365,11 @@ function create_compiler(configuration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				loadIds.push(match[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//backward compatibility 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (builder.ids.indexOf("amber_vm/boot") === -1) { console.log(builder.ids); console.log("defining amber_vm/boot"); builder.add('define("amber_vm/boot", ["amber/boot"], function (boot) { return boot; });'); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// store the generated smalltalk env in configuration.{vm,globals} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		builder.finish('configuration.vm = vm; configuration.globals = globals;'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		builder.finish('configuration.vm = boot.vm; configuration.globals = boot.globals;'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		loadIds.forEach(function (id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			builder.add('requirejs("' + id + '");'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -547,9 +553,9 @@ function compose_js_files(configuration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				console.log('Adding : ' + file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var buffer = fs.readFileSync(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				// matches and returns the "module_id" string in the AMD define: define("module_id", ...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				var match = buffer.toString().match(/^define\("([^"]*)"/); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var match = buffer.toString().match(/(^|\n)define\("([^"]*)"/); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if (match /*&& match[1].slice(0,9) !== "amber_vm/"*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					builder.addId(match[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					builder.addId(match[2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				builder.add(buffer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -557,8 +563,10 @@ function compose_js_files(configuration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				reject(Error('Can not find file ' + file)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//backward compatibility 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (builder.ids.indexOf("amber_vm/boot") === -1) { builder.add('define("amber_vm/boot", ["amber/boot"], function (boot) { return boot; });'); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var mainFunctionOrFile = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var mainFunctionOrFile = 'var vm = boot.vm, globals = boot.globals;\n'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (undefined !== configuration.main) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			console.log('Adding call to: %s>>main', configuration.main); 
			 |