| Index: messageResponder.js | 
| =================================================================== | 
| --- a/messageResponder.js | 
| +++ b/messageResponder.js | 
| @@ -40,6 +40,22 @@ | 
| var DownloadableSubscription = subscriptionClasses.DownloadableSubscription; | 
| var SpecialSubscription = subscriptionClasses.SpecialSubscription; | 
|  | 
| +  // Some modules doesn't exist on Firefox. Moreover, | 
| +  // require() throws an exception on Firefox in that case. | 
| +  // However, try/catch causes the whole function to to be | 
| +  // deoptimized on V8. So we wrap it into another function. | 
| +  function tryRequire(module) | 
| +  { | 
| +    try | 
| +    { | 
| +      return require(module); | 
| +    } | 
| +    catch (e) | 
| +    { | 
| +      return null; | 
| +    } | 
| +  } | 
| + | 
| function convertObject(keys, obj) | 
| { | 
| var result = {}; | 
| @@ -138,16 +154,7 @@ | 
| case "app.get": | 
| if (message.what == "issues") | 
| { | 
| -          var subscriptionInit; | 
| -          try | 
| -          { | 
| -            subscriptionInit = require("subscriptionInit"); | 
| -          } | 
| -          catch (e) | 
| -          { | 
| -            // Expected exception, this module doesn't exist on Firefox | 
| -          } | 
| - | 
| +          var subscriptionInit = tryRequire("subscriptionInit"); | 
| callback({ | 
| filterlistsReinitialized: subscriptionInit ? subscriptionInit.reinitialized : false, | 
| legacySafariVersion: (info.platform == "safari" && ( | 
|  |