SpiderMonkey

[4] The engine powers the Firefox web browser and has used multiple generations of JavaScript just-in-time (JIT) compilers, including TraceMonkey, JägerMonkey, IonMonkey, and the current WarpMonkey.It is the first JavaScript engine, written by Brendan Eich at Netscape Communications, and later released as open source and currently maintained by the Mozilla Foundation.Its design allows it to be embedded in applications beyond web browsers, with implementations including MongoDB database system, Adobe Acrobat, and the GNOME desktop environment.)[6] In late 1996, Eich, needing to "pay off [the] substantial technical debt" left from the first year, "stayed home for two weeks to rewrite Mocha as the codebase that became known as SpiderMonkey".[14] JägerMonkey, internally named MethodJIT, was a whole-method JIT compiler designed to improve performance in cases where TraceMonkey could not generate stable native code.Although this prohibits optimizations that require instruction reordering, JägerMonkey compiling has the advantage of being very fast, which is useful for JavaScript since recompiling due to changing variable types is frequent.[18] IonMonkey was a more traditional compiler: it translated SpiderMonkey bytecode into a control-flow graph, using static single assignment form (SSA) for the intermediate representation.
Spider monkeySpider monkey (disambiguation)Developer(s)Mozilla FoundationMozilla CorporationRepositoryOperating systemCross-platformPlatformx86-64RISC-VJavaScriptWebAssemblyLicenseMPL 2.0open-sourceFirefoxweb browserjust-in-time (JIT) compilersJavaScript engineBrendan EichNetscapeSchemetechnical debtECMAScriptECMAScript for XMLinterpreterJIT compilergarbage collectorFirefox 3.5Firefox 3tracing JITcontrol flowdata typestrace treesnative codetype inferenceFirefox 4control-flow graphbytecodepolymorphic inline cachesarchive.todaystatic single assignment formintermediate representationfunction inliningregister allocationdead code eliminationloop-invariant code motionasm.jsThunderbirdSeaMonkeyMozilla application frameworkPale MoonBasiliskWaterfoxMongoDBCouchDBErlangAdobe AcrobatAdobe Flash ProfessionalAdobe DreamweaverYahoo! WidgetsFreeSWITCHELinksJScriptSynchronetJavaScript OSAinter-process communication0 A.D.Rhino (JavaScript engine)List of ECMAScript enginesEich, BrendanLinux JournalWayback MachineMozillaBugzillaChatZillaJetpackLightningPersonaRaindropSkywriterSunbirdPDF.jsUbiquityOpen MediaShumwayFirefox OSOpenFlintMozilla Location ServiceList of productsFirefox BrowserEarly version historyVersion historyfor AndroidFirefox LockwiseFirefox MonitorMozilla VPNPocketMozilla Application SuiteNetscape NavigatorNetscape CommunicatorNetscape CommunicationsBeonex CommunicatorAdd-onComposerTamarinZilla SlabCalendar ProjectCaminoFirefox SendMinimoXPInstallXULRunnerClassillaGoannaIceCatLibreWolfNetscape 9Portable EditionSwiftfoxSwiftweaselxB BrowserMozilla MessagingMozilla ChinaMozilla EuropeMozilla JapanMitchell BakerDavid BaronTantek ÇelikLaura ChambersJohn HamminkJohnny StenbäckDoug Turnermozdev.orgMDN Web DocsMozillaZineMozilla ManifestoThe Book of MozillaCode RushMozilla Public LicenseMascotDebian–Mozilla trademark disputeCommon VoiceMozilla Corp. v. FCCActionScriptenginesJScript .NETQtScriptTypeScriptWMLScriptInScriptChakraCoreChakraNashornFrameworksClient-sideExt JSGoogle Web ToolkitjQueryLively KernelMochiKitMooToolsPrototypeqooxdooSproutCoreServer-sideNode.jsAppJetLibrariesBackbone.jsSWFObjectUnderscore.jsDouglas CrockfordJohn ResigEcma InternationalJSHintJSLintSputnikAsynchronous module definitionCommonJSJavaScript librariesJavaScript frameworksserver-side JavaScript