Backported to non-ARC
Backported to 32-bit and iOS 6 (falls back gracefully if JavaScriptCore is unavailable)