|
@@ -855,22 +855,27 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require
|
|
|
if(thisContext) {
|
|
|
return inContext(worker, setup);
|
|
|
} else {
|
|
|
- try {
|
|
|
- return inContext(worker, setup);
|
|
|
- } catch(error) {
|
|
|
- handleError(error);
|
|
|
- thisContext = null;
|
|
|
-
|
|
|
- error.amberHandled = true;
|
|
|
- throw error;
|
|
|
- }
|
|
|
+ return inContextWithErrorHandling(worker, setup);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ function inContextWithErrorHandling(worker, setup) {
|
|
|
+ try {
|
|
|
+ return inContext(worker, setup);
|
|
|
+ } catch (error) {
|
|
|
+ handleError(error);
|
|
|
+ thisContext = null;
|
|
|
+
|
|
|
+ error.amberHandled = true;
|
|
|
+ throw error;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
function inContext(worker, setup) {
|
|
|
- var context = pushContext(setup);
|
|
|
- var result = worker(context);
|
|
|
- popContext(context);
|
|
|
+ var oldContext = thisContext;
|
|
|
+ thisContext = new SmalltalkMethodContext(thisContext, setup);
|
|
|
+ var result = worker(thisContext);
|
|
|
+ thisContext = oldContext;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -930,16 +935,6 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require
|
|
|
return nil;
|
|
|
}
|
|
|
};
|
|
|
-
|
|
|
- function pushContext(setup) {
|
|
|
- thisContext = new SmalltalkMethodContext(thisContext, setup);
|
|
|
- return thisContext;
|
|
|
- }
|
|
|
-
|
|
|
- function popContext(context) {
|
|
|
- thisContext = context.homeContext;
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
|
|
|
function MessageSendBrik(brikz, st) {
|