AsmJSActivation::AsmJSActivation(JSContext *cx, AsmJSModule &module) : Activation(cx, AsmJS), module_(module), entrySP_(nullptr), profiler_(nullptr), resumePC_(nullptr), fp_(nullptr), exitReason_(AsmJSExit::None) { (void) entrySP_; // squelch GCC warning // NB: this is a hack and can be removed once Ion switches over to // JS::ProfilingFrameIterator. if (cx->runtime()->spsProfiler.enabled()) { profiler_ = &cx->runtime()->spsProfiler; profiler_->enterAsmJS("asm.js code :0", this); } prevAsmJSForModule_ = module.activation(); module.activation() = this; prevAsmJS_ = cx->mainThread().asmJSActivationStack_; cx->mainThread().asmJSActivationStack_ = this; // Now that the AsmJSActivation is fully initialized, make it visible to // asynchronous profiling. registerProfiling(); }
AsmJSActivation::AsmJSActivation(JSContext *cx, AsmJSModule &module) : Activation(cx, AsmJS), module_(module), errorRejoinSP_(nullptr), profiler_(nullptr), resumePC_(nullptr), fp_(nullptr), exitReason_(AsmJSExit::None) { if (cx->runtime()->spsProfiler.enabled()) { // Use a profiler string that matches jsMatch regex in // browser/devtools/profiler/cleopatra/js/parserWorker.js. // (For now use a single static string to avoid further slowing down // calls into asm.js.) profiler_ = &cx->runtime()->spsProfiler; profiler_->enterAsmJS("asm.js code :0", this); } prevAsmJSForModule_ = module.activation(); module.activation() = this; prevAsmJS_ = cx->mainThread().asmJSActivationStack_; JSRuntime::AutoLockForInterrupt lock(cx->runtime()); cx->mainThread().asmJSActivationStack_ = this; (void) errorRejoinSP_; // squelch GCC warning }