Browse Source

Recompile (while version set to 0.21.0)

Herbert Vojčík 6 years ago
parent
commit
35dc59c7c9
1 changed files with 320 additions and 66 deletions
  1. 320 66
      external/amber-cli/support/amber-cli.js

+ 320 - 66
external/amber-cli/support/amber-cli.js

@@ -1179,11 +1179,21 @@ define('amber/kernel-runtime',[],function () {
         });
         });
     }
     }
 
 
-    DNUBrik.deps = ["selectors", "smalltalkGlobals", "manipulation", "classes"];
+    function installJSMethod (obj, jsSelector, fn) {
+        Object.defineProperty(obj, jsSelector, {
+            value: fn,
+            enumerable: false, configurable: true, writable: true
+        });
+    }
+
+    function installMethod (method, klass) {
+        installJSMethod(klass.fn.prototype, method.jsSelector, method.fn);
+    }
+
+    DNUBrik.deps = ["selectors", "smalltalkGlobals", "classes"];
     function DNUBrik (brikz, st) {
     function DNUBrik (brikz, st) {
         var selectorPairs = brikz.selectors.selectorPairs;
         var selectorPairs = brikz.selectors.selectorPairs;
         var globals = brikz.smalltalkGlobals.globals;
         var globals = brikz.smalltalkGlobals.globals;
-        var installJSMethod = brikz.manipulation.installJSMethod;
         var nilAsClass = brikz.classes.nilAsClass;
         var nilAsClass = brikz.classes.nilAsClass;
 
 
         /* Method not implemented handlers */
         /* Method not implemented handlers */
@@ -1214,29 +1224,11 @@ define('amber/kernel-runtime',[],function () {
         });
         });
     }
     }
 
 
-    function ManipulationBrik (brikz, st) {
-        function installJSMethod (obj, jsSelector, fn) {
-            Object.defineProperty(obj, jsSelector, {
-                value: fn,
-                enumerable: false, configurable: true, writable: true
-            });
-        }
-
-        function installMethod (method, klass) {
-            installJSMethod(klass.fn.prototype, method.jsSelector, method.fn);
-        }
-
-        this.installMethod = installMethod;
-        this.installJSMethod = installJSMethod;
-    }
-
-    RuntimeClassesBrik.deps = ["event", "selectors", "dnu", "behaviors", "classes", "manipulation"];
+    RuntimeClassesBrik.deps = ["event", "selectors", "dnu", "behaviors", "classes"];
     function RuntimeClassesBrik (brikz, st) {
     function RuntimeClassesBrik (brikz, st) {
         var selectors = brikz.selectors;
         var selectors = brikz.selectors;
         var traitsOrClasses = brikz.behaviors.traitsOrClasses;
         var traitsOrClasses = brikz.behaviors.traitsOrClasses;
         var wireKlass = brikz.classes.wireKlass;
         var wireKlass = brikz.classes.wireKlass;
-        var installMethod = brikz.manipulation.installMethod;
-        var installJSMethod = brikz.manipulation.installJSMethod;
         var emit = brikz.event.emit;
         var emit = brikz.event.emit;
 
 
         var detachedRootClasses = [];
         var detachedRootClasses = [];
@@ -1337,10 +1329,8 @@ define('amber/kernel-runtime',[],function () {
         }
         }
     }
     }
 
 
-    RuntimeMethodsBrik.deps = ["event", "manipulation", "dnu", "runtimeClasses"];
+    RuntimeMethodsBrik.deps = ["event", "dnu", "runtimeClasses"];
     function RuntimeMethodsBrik (brikz, st) {
     function RuntimeMethodsBrik (brikz, st) {
-        var installMethod = brikz.manipulation.installMethod;
-        var installJSMethod = brikz.manipulation.installJSMethod;
         var makeDnuHandler = brikz.dnu.makeDnuHandler;
         var makeDnuHandler = brikz.dnu.makeDnuHandler;
         var detachedRootClasses = brikz.runtimeClasses.detachedRootClasses;
         var detachedRootClasses = brikz.runtimeClasses.detachedRootClasses;
         var emit = brikz.event.emit;
         var emit = brikz.event.emit;
@@ -1551,7 +1541,7 @@ define('amber/kernel-runtime',[],function () {
          an uppercase character (we probably want to answer the function itself in this
          an uppercase character (we probably want to answer the function itself in this
          case and send it #new from Amber).
          case and send it #new from Amber).
          */
          */
-        st.accessJavaScript = function accessJavaScript (self, propertyName, args) {
+        st.accessJavaScript = function (self, propertyName, args) {
             var propertyValue = self[propertyName];
             var propertyValue = self[propertyName];
             if (typeof propertyValue === "function" && !/^[A-Z]/.test(propertyName)) {
             if (typeof propertyValue === "function" && !/^[A-Z]/.test(propertyName)) {
                 return propertyValue.apply(self, args || []);
                 return propertyValue.apply(self, args || []);
@@ -1577,7 +1567,6 @@ define('amber/kernel-runtime',[],function () {
 
 
     function configureWithRuntime (brikz) {
     function configureWithRuntime (brikz) {
         brikz.dnu = DNUBrik;
         brikz.dnu = DNUBrik;
-        brikz.manipulation = ManipulationBrik;
         brikz.runtimeClasses = RuntimeClassesBrik;
         brikz.runtimeClasses = RuntimeClassesBrik;
         brikz.frameBinding = FrameBindingBrik;
         brikz.frameBinding = FrameBindingBrik;
         brikz.runtimeMethods = RuntimeMethodsBrik;
         brikz.runtimeMethods = RuntimeMethodsBrik;
@@ -1615,10 +1604,26 @@ define('amber/kernel-checks',[],function () {
         return !("hasOwnProperty" in Object.create(null));
         return !("hasOwnProperty" in Object.create(null));
     });
     });
     assert(function () {
     assert(function () {
-        return new Function("return this")().Object === Object;
+        return Object.getPrototypeOf(Object.create(null)) === null;
+    });
+    assert(function () {
+        var p = {};
+        return Object.getPrototypeOf(Object.create(p)) === p;
+    });
+    // assert(function () {
+    //     return new Function("return this")().Object === Object;
+    // });
+    // assert(function () {
+    //     return Object.create(new Function("return this")()).Object === Object;
+    // });
+    assert(function () {
+        return typeof global !== "undefined";
+    });
+    assert(function () {
+        return global.Object === Object;
     });
     });
     assert(function () {
     assert(function () {
-        return Object.create(new Function("return this")()).Object === Object;
+        return Object.create(global).Object === Object;
     });
     });
     assert(function () {
     assert(function () {
         return (function () {
         return (function () {
@@ -1799,9 +1804,7 @@ define('amber/kernel-fundamentals',[],function () {
     }
     }
 
 
     function SmalltalkGlobalsBrik (brikz, st) {
     function SmalltalkGlobalsBrik (brikz, st) {
-        // jshint evil:true
-        var jsGlobals = new Function("return this")();
-        var globals = Object.create(jsGlobals);
+        var globals = Object.create(global);
         globals.SmalltalkSettings = {};
         globals.SmalltalkSettings = {};
 
 
         this.globals = globals;
         this.globals = globals;
@@ -2792,8 +2795,7 @@ define('amber/helpers',["amber/boot", "require"], function (boot, require) {
 
 
     function settingsInLocalStorage () {
     function settingsInLocalStorage () {
         //jshint evil:true
         //jshint evil:true
-        var global = new Function('return this')(),
-            storage = 'localStorage' in global && global.localStorage;
+        var storage = 'localStorage' in global && global.localStorage;
 
 
         if (storage) {
         if (storage) {
             var fromStorage;
             var fromStorage;
@@ -2803,6 +2805,7 @@ define('amber/helpers',["amber/boot", "require"], function (boot, require) {
                 // pass
                 // pass
             }
             }
             mixinToSettings(fromStorage || {});
             mixinToSettings(fromStorage || {});
+            // TODO find less hackish way to store settings back to storage.
             if (typeof window !== "undefined") {
             if (typeof window !== "undefined") {
                 requirejs(['jquery'], function ($) {
                 requirejs(['jquery'], function ($) {
                     $(window).on('beforeunload', function () {
                     $(window).on('beforeunload', function () {
@@ -5921,6 +5924,78 @@ messageSends: ["and:", ">=", "<="]
 }),
 }),
 $globals.Number);
 $globals.Number);
 
 
+$core.addMethod(
+$core.method({
+selector: "bitAnd:",
+protocol: "converting",
+fn: function (aNumber){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+return self & aNumber;
+return self;
+}, function($ctx1) {$ctx1.fill(self,"bitAnd:",{aNumber:aNumber},$globals.Number)});
+},
+args: ["aNumber"],
+source: "bitAnd: aNumber\x0a\x09<inlineJS: 'return self & aNumber'>",
+referencedClasses: [],
+messageSends: []
+}),
+$globals.Number);
+
+$core.addMethod(
+$core.method({
+selector: "bitNot",
+protocol: "converting",
+fn: function (){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+return ~self;
+return self;
+}, function($ctx1) {$ctx1.fill(self,"bitNot",{},$globals.Number)});
+},
+args: [],
+source: "bitNot\x0a\x09<inlineJS: 'return ~self'>",
+referencedClasses: [],
+messageSends: []
+}),
+$globals.Number);
+
+$core.addMethod(
+$core.method({
+selector: "bitOr:",
+protocol: "converting",
+fn: function (aNumber){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+return self | aNumber;
+return self;
+}, function($ctx1) {$ctx1.fill(self,"bitOr:",{aNumber:aNumber},$globals.Number)});
+},
+args: ["aNumber"],
+source: "bitOr: aNumber\x0a\x09<inlineJS: 'return self | aNumber'>",
+referencedClasses: [],
+messageSends: []
+}),
+$globals.Number);
+
+$core.addMethod(
+$core.method({
+selector: "bitXor:",
+protocol: "converting",
+fn: function (aNumber){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+return self ^ aNumber;
+return self;
+}, function($ctx1) {$ctx1.fill(self,"bitXor:",{aNumber:aNumber},$globals.Number)});
+},
+args: ["aNumber"],
+source: "bitXor: aNumber\x0a\x09<inlineJS: 'return self ^ aNumber'>",
+referencedClasses: [],
+messageSends: []
+}),
+$globals.Number);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "ceiling",
 selector: "ceiling",
@@ -6302,6 +6377,24 @@ messageSends: []
 }),
 }),
 $globals.Number);
 $globals.Number);
 
 
+$core.addMethod(
+$core.method({
+selector: "printStringBase:",
+protocol: "converting",
+fn: function (aBase){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+return self.toString(aBase);
+return self;
+}, function($ctx1) {$ctx1.fill(self,"printStringBase:",{aBase:aBase},$globals.Number)});
+},
+args: ["aBase"],
+source: "printStringBase: aBase\x0a\x09<inlineJS: 'return self.toString(aBase)'>",
+referencedClasses: [],
+messageSends: []
+}),
+$globals.Number);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "radiansToDegrees",
 selector: "radiansToDegrees",
@@ -21021,14 +21114,14 @@ fn: function (aString){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals()[aString];
 		return new nativeFunc();
 		return new nativeFunc();
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:",{aString:aString},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:",{aString:aString},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString"],
 args: ["aString"],
-source: "constructorNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return new nativeFunc();\x0a\x09'>",
+source: "constructorNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc();\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21042,14 +21135,14 @@ fn: function (aString,anObject){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals()[aString];
 		return new nativeFunc(anObject);
 		return new nativeFunc(anObject);
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:",{aString:aString,anObject:anObject},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:",{aString:aString,anObject:anObject},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString", "anObject"],
 args: ["aString", "anObject"],
-source: "constructorNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09'>",
+source: "constructorNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21063,14 +21156,14 @@ fn: function (aString,anObject,anObject2){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals[aString];
 		return new nativeFunc(anObject,anObject2);
 		return new nativeFunc(anObject,anObject2);
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString", "anObject", "anObject2"],
 args: ["aString", "anObject", "anObject2"],
-source: "constructorNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09'>",
+source: "constructorNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21084,14 +21177,14 @@ fn: function (aString,anObject,anObject2,anObject3){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals[aString];
 		return new nativeFunc(anObject,anObject2, anObject3);
 		return new nativeFunc(anObject,anObject2, anObject3);
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString", "anObject", "anObject2", "anObject3"],
 args: ["aString", "anObject", "anObject2", "anObject3"],
-source: "constructorNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
+source: "constructorNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21184,13 +21277,13 @@ protocol: "testing",
 fn: function (aString){
 fn: function (aString){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
-return $recv($globals.Smalltalk)._existsJsGlobal_(aString);
+return $recv($globals.Platform)._includesGlobal_(aString);
 }, function($ctx1) {$ctx1.fill(self,"exists:",{aString:aString},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"exists:",{aString:aString},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString"],
 args: ["aString"],
-source: "exists: aString\x0a\x09^ Smalltalk existsJsGlobal: aString",
-referencedClasses: ["Smalltalk"],
-messageSends: ["existsJsGlobal:"]
+source: "exists: aString\x0a\x09^ Platform includesGlobal: aString",
+referencedClasses: ["Platform"],
+messageSends: ["includesGlobal:"]
 }),
 }),
 $globals.NativeFunction.a$cls);
 $globals.NativeFunction.a$cls);
 
 
@@ -21202,14 +21295,14 @@ fn: function (aString){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals[aString];
 		return nativeFunc();
 		return nativeFunc();
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:",{aString:aString},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:",{aString:aString},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString"],
 args: ["aString"],
-source: "functionNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return nativeFunc();\x0a\x09'>",
+source: "functionNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals[aString];\x0a\x09\x09return nativeFunc();\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21223,14 +21316,14 @@ fn: function (aString,anObject){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals()[aString];
 		return nativeFunc(anObject);
 		return nativeFunc(anObject);
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:",{aString:aString,anObject:anObject},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:",{aString:aString,anObject:anObject},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString", "anObject"],
 args: ["aString", "anObject"],
-source: "functionNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return nativeFunc(anObject);\x0a\x09'>",
+source: "functionNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject);\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21244,14 +21337,14 @@ fn: function (aString,anObject,anObject2){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals()[aString];
 		return nativeFunc(anObject,anObject2);
 		return nativeFunc(anObject,anObject2);
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString", "anObject", "anObject2"],
 args: ["aString", "anObject", "anObject2"],
-source: "functionNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09'>",
+source: "functionNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21265,14 +21358,14 @@ fn: function (aString,anObject,anObject2,anObject3){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals()[aString];
 		return nativeFunc(anObject,anObject2, anObject3);
 		return nativeFunc(anObject,anObject2, anObject3);
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString", "anObject", "anObject2", "anObject3"],
 args: ["aString", "anObject", "anObject2", "anObject3"],
-source: "functionNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
+source: "functionNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -21286,14 +21379,14 @@ fn: function (aString,args){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 
 
-		var nativeFunc=(new Function('return this'))()[aString];
+		var nativeFunc=$globals.Platform._globals()[aString];
 		return Function.prototype.apply.call(nativeFunc, null, args);
 		return Function.prototype.apply.call(nativeFunc, null, args);
 	;
 	;
 return self;
 return self;
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:valueWithArgs:",{aString:aString,args:args},$globals.NativeFunction.a$cls)});
 }, function($ctx1) {$ctx1.fill(self,"functionNamed:valueWithArgs:",{aString:aString,args:args},$globals.NativeFunction.a$cls)});
 },
 },
 args: ["aString", "args"],
 args: ["aString", "args"],
-source: "functionNamed: aString valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=(new Function(''return this''))()[aString];\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09'>",
+source: "functionNamed: aString valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09'>",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -25482,19 +25575,14 @@ protocol: "testing",
 fn: function (aString){
 fn: function (aString){
 var self=this,$self=this;
 var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
-return $recv($recv($globals.Platform)._globals())._at_ifPresent_ifAbsent_(aString,(function(){
-return true;
-
-}),(function(){
-return false;
-
-}));
+$self._deprecatedAPI_("Use Platform >> includesGlobal: instead");
+return $recv($globals.Platform)._includesGlobal_(aString);
 }, function($ctx1) {$ctx1.fill(self,"existsJsGlobal:",{aString:aString},$globals.SmalltalkImage)});
 }, function($ctx1) {$ctx1.fill(self,"existsJsGlobal:",{aString:aString},$globals.SmalltalkImage)});
 },
 },
 args: ["aString"],
 args: ["aString"],
-source: "existsJsGlobal: aString\x0a\x09^ Platform globals \x0a\x09\x09at: aString \x0a\x09\x09ifPresent: [ true ] \x0a\x09\x09ifAbsent: [ false ]",
+source: "existsJsGlobal: aString\x0a\x09self deprecatedAPI: 'Use Platform >> includesGlobal: instead'.\x0a\x09^ Platform includesGlobal: aString",
 referencedClasses: ["Platform"],
 referencedClasses: ["Platform"],
-messageSends: ["at:ifPresent:ifAbsent:", "globals"]
+messageSends: ["deprecatedAPI:", "includesGlobal:"]
 }),
 }),
 $globals.SmalltalkImage);
 $globals.SmalltalkImage);
 
 
@@ -25950,11 +26038,11 @@ selector: "version",
 protocol: "accessing",
 protocol: "accessing",
 fn: function (){
 fn: function (){
 var self=this,$self=this;
 var self=this,$self=this;
-return "0.20.0";
+return "0.21.0";
 
 
 },
 },
 args: [],
 args: [],
-source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.20.0'",
+source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.21.0'",
 referencedClasses: [],
 referencedClasses: [],
 messageSends: []
 messageSends: []
 }),
 }),
@@ -28288,6 +28376,29 @@ messageSends: ["globals", "current"]
 }),
 }),
 $globals.Platform.a$cls);
 $globals.Platform.a$cls);
 
 
+$core.addMethod(
+$core.method({
+selector: "includesGlobal:",
+protocol: "testing",
+fn: function (aString){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+return $recv($self._globals())._at_ifPresent_ifAbsent_(aString,(function(){
+return true;
+
+}),(function(){
+return false;
+
+}));
+}, function($ctx1) {$ctx1.fill(self,"includesGlobal:",{aString:aString},$globals.Platform.a$cls)});
+},
+args: ["aString"],
+source: "includesGlobal: aString\x0a\x09^ self globals \x0a\x09\x09at: aString \x0a\x09\x09ifPresent: [ true ] \x0a\x09\x09ifAbsent: [ false ]",
+referencedClasses: [],
+messageSends: ["at:ifPresent:ifAbsent:", "globals"]
+}),
+$globals.Platform.a$cls);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "newXhr",
 selector: "newXhr",
@@ -62674,6 +62785,118 @@ messageSends: ["assert:", "between:and:", "not"]
 }),
 }),
 $globals.NumberTest);
 $globals.NumberTest);
 
 
+$core.addMethod(
+$core.method({
+selector: "testBitAnd",
+protocol: "tests",
+fn: function (){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+var $1,$2;
+$1=(15)._bitAnd_((2));
+$ctx1.sendIdx["bitAnd:"]=1;
+$self._assert_equals_($1,(2));
+$ctx1.sendIdx["assert:equals:"]=1;
+$2=(15)._bitAnd_((15));
+$ctx1.sendIdx["bitAnd:"]=2;
+$self._assert_equals_($2,(15));
+$ctx1.sendIdx["assert:equals:"]=2;
+$self._assert_equals_((-1)._bitAnd_((1021)),(1021));
+return self;
+}, function($ctx1) {$ctx1.fill(self,"testBitAnd",{},$globals.NumberTest)});
+},
+args: [],
+source: "testBitAnd\x0a\x09self assert: (15 bitAnd: 2) equals: 2.\x0a\x09self assert: (15 bitAnd: 15) equals: 15.\x0a\x09self assert: (-1 bitAnd: 1021) equals: 1021",
+referencedClasses: [],
+messageSends: ["assert:equals:", "bitAnd:"]
+}),
+$globals.NumberTest);
+
+$core.addMethod(
+$core.method({
+selector: "testBitNot",
+protocol: "tests",
+fn: function (){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+var $1,$2;
+$1=(2)._bitNot();
+$ctx1.sendIdx["bitNot"]=1;
+$self._assert_equals_($1,(-3));
+$ctx1.sendIdx["assert:equals:"]=1;
+$2=(-1)._bitNot();
+$ctx1.sendIdx["bitNot"]=2;
+$self._assert_equals_($2,(0));
+$ctx1.sendIdx["assert:equals:"]=2;
+$self._assert_equals_((-1022)._bitNot(),(1021));
+return self;
+}, function($ctx1) {$ctx1.fill(self,"testBitNot",{},$globals.NumberTest)});
+},
+args: [],
+source: "testBitNot\x0a\x09self assert: 2 bitNot equals: -3.\x0a\x09self assert: -1 bitNot equals: 0.\x0a\x09self assert: -1022 bitNot equals: 1021",
+referencedClasses: [],
+messageSends: ["assert:equals:", "bitNot"]
+}),
+$globals.NumberTest);
+
+$core.addMethod(
+$core.method({
+selector: "testBitOr",
+protocol: "tests",
+fn: function (){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+var $1,$2;
+$1=(2)._bitOr_((4));
+$ctx1.sendIdx["bitOr:"]=1;
+$self._assert_equals_($1,(6));
+$ctx1.sendIdx["assert:equals:"]=1;
+$2=(7)._bitOr_((2));
+$ctx1.sendIdx["bitOr:"]=2;
+$self._assert_equals_($2,(7));
+$ctx1.sendIdx["assert:equals:"]=2;
+$self._assert_equals_((-1)._bitOr_((1021)),(-1));
+return self;
+}, function($ctx1) {$ctx1.fill(self,"testBitOr",{},$globals.NumberTest)});
+},
+args: [],
+source: "testBitOr\x0a\x09self assert: (2 bitOr: 4) equals: 6.\x0a\x09self assert: (7 bitOr: 2) equals: 7.\x0a\x09self assert: (-1 bitOr: 1021) equals: -1",
+referencedClasses: [],
+messageSends: ["assert:equals:", "bitOr:"]
+}),
+$globals.NumberTest);
+
+$core.addMethod(
+$core.method({
+selector: "testBitXor",
+protocol: "tests",
+fn: function (){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+var $1,$2,$3;
+$1=(2)._bitXor_((4));
+$ctx1.sendIdx["bitXor:"]=1;
+$self._assert_equals_($1,(6));
+$ctx1.sendIdx["assert:equals:"]=1;
+$2=(7)._bitXor_((2));
+$ctx1.sendIdx["bitXor:"]=2;
+$self._assert_equals_($2,(5));
+$ctx1.sendIdx["assert:equals:"]=2;
+$3=(-1)._bitXor_((1021));
+$ctx1.sendIdx["bitXor:"]=3;
+$self._assert_equals_($3,(-1022));
+$ctx1.sendIdx["assert:equals:"]=3;
+$self._assert_equals_((91)._bitXor_((91)),(0));
+return self;
+}, function($ctx1) {$ctx1.fill(self,"testBitXor",{},$globals.NumberTest)});
+},
+args: [],
+source: "testBitXor\x0a\x09self assert: (2 bitXor: 4) equals: 6.\x0a\x09self assert: (7 bitXor: 2) equals: 5.\x0a\x09self assert: (-1 bitXor: 1021) equals: -1022.\x0a\x09self assert: (91 bitXor: 91) equals: 0",
+referencedClasses: [],
+messageSends: ["assert:equals:", "bitXor:"]
+}),
+$globals.NumberTest);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "testCeiling",
 selector: "testCeiling",
@@ -63369,6 +63592,37 @@ messageSends: ["assert:equals:", "printShowingDecimalPlaces:", "negated"]
 }),
 }),
 $globals.NumberTest);
 $globals.NumberTest);
 
 
+$core.addMethod(
+$core.method({
+selector: "testPrintStringBase",
+protocol: "tests",
+fn: function (){
+var self=this,$self=this;
+return $core.withContext(function($ctx1) {
+var $1,$2,$3;
+$1=(15)._printStringBase_((2));
+$ctx1.sendIdx["printStringBase:"]=1;
+$self._assert_equals_($1,"1111");
+$ctx1.sendIdx["assert:equals:"]=1;
+$2=(15)._printStringBase_((16));
+$ctx1.sendIdx["printStringBase:"]=2;
+$self._assert_equals_($2,"f");
+$ctx1.sendIdx["assert:equals:"]=2;
+$3=(256)._printStringBase_((16));
+$ctx1.sendIdx["printStringBase:"]=3;
+$self._assert_equals_($3,"100");
+$ctx1.sendIdx["assert:equals:"]=3;
+$self._assert_equals_((256)._printStringBase_((2)),"100000000");
+return self;
+}, function($ctx1) {$ctx1.fill(self,"testPrintStringBase",{},$globals.NumberTest)});
+},
+args: [],
+source: "testPrintStringBase\x0a\x09self assert: (15 printStringBase: 2) equals: '1111'.\x0a\x09self assert: (15 printStringBase: 16) equals: 'f'.\x0a\x09self assert: (256 printStringBase: 16) equals: '100'.\x0a\x09self assert: (256 printStringBase: 2) equals: '100000000'",
+referencedClasses: [],
+messageSends: ["assert:equals:", "printStringBase:"]
+}),
+$globals.NumberTest);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "testRadiansToDegrees",
 selector: "testRadiansToDegrees",