gecko/js/src/jsscriptinlines.h

142 lines
3.3 KiB
C
Raw Normal View History

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* vim: set ts=8 sts=4 et sw=4 tw=99:
2012-05-21 04:12:37 -07:00
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef jsscriptinlines_h
#define jsscriptinlines_h
#include "jsscript.h"
Bug 902908 - Rename js/src/ion to js/src/jit. r=luke --HG-- rename : js/src/ion/AliasAnalysis.cpp => js/src/jit/AliasAnalysis.cpp rename : js/src/ion/AliasAnalysis.h => js/src/jit/AliasAnalysis.h rename : js/src/ion/AsmJS.cpp => js/src/jit/AsmJS.cpp rename : js/src/ion/AsmJS.h => js/src/jit/AsmJS.h rename : js/src/ion/AsmJSLink.cpp => js/src/jit/AsmJSLink.cpp rename : js/src/ion/AsmJSLink.h => js/src/jit/AsmJSLink.h rename : js/src/ion/AsmJSModule.cpp => js/src/jit/AsmJSModule.cpp rename : js/src/ion/AsmJSModule.h => js/src/jit/AsmJSModule.h rename : js/src/ion/AsmJSSignalHandlers.cpp => js/src/jit/AsmJSSignalHandlers.cpp rename : js/src/ion/AsmJSSignalHandlers.h => js/src/jit/AsmJSSignalHandlers.h rename : js/src/ion/BacktrackingAllocator.cpp => js/src/jit/BacktrackingAllocator.cpp rename : js/src/ion/BacktrackingAllocator.h => js/src/jit/BacktrackingAllocator.h rename : js/src/ion/Bailouts.cpp => js/src/jit/Bailouts.cpp rename : js/src/ion/Bailouts.h => js/src/jit/Bailouts.h rename : js/src/ion/BaselineBailouts.cpp => js/src/jit/BaselineBailouts.cpp rename : js/src/ion/BaselineCompiler.cpp => js/src/jit/BaselineCompiler.cpp rename : js/src/ion/BaselineCompiler.h => js/src/jit/BaselineCompiler.h rename : js/src/ion/BaselineFrame-inl.h => js/src/jit/BaselineFrame-inl.h rename : js/src/ion/BaselineFrame.cpp => js/src/jit/BaselineFrame.cpp rename : js/src/ion/BaselineFrame.h => js/src/jit/BaselineFrame.h rename : js/src/ion/BaselineFrameInfo.cpp => js/src/jit/BaselineFrameInfo.cpp rename : js/src/ion/BaselineFrameInfo.h => js/src/jit/BaselineFrameInfo.h rename : js/src/ion/BaselineHelpers.h => js/src/jit/BaselineHelpers.h rename : js/src/ion/BaselineIC.cpp => js/src/jit/BaselineIC.cpp rename : js/src/ion/BaselineIC.h => js/src/jit/BaselineIC.h rename : js/src/ion/BaselineInspector.cpp => js/src/jit/BaselineInspector.cpp rename : js/src/ion/BaselineInspector.h => js/src/jit/BaselineInspector.h rename : js/src/ion/BaselineJIT.cpp => js/src/jit/BaselineJIT.cpp rename : js/src/ion/BaselineJIT.h => js/src/jit/BaselineJIT.h rename : js/src/ion/BaselineRegisters.h => js/src/jit/BaselineRegisters.h rename : js/src/ion/BitSet.cpp => js/src/jit/BitSet.cpp rename : js/src/ion/BitSet.h => js/src/jit/BitSet.h rename : js/src/ion/BytecodeAnalysis.cpp => js/src/jit/BytecodeAnalysis.cpp rename : js/src/ion/BytecodeAnalysis.h => js/src/jit/BytecodeAnalysis.h rename : js/src/ion/C1Spewer.cpp => js/src/jit/C1Spewer.cpp rename : js/src/ion/C1Spewer.h => js/src/jit/C1Spewer.h rename : js/src/ion/CodeGenerator.cpp => js/src/jit/CodeGenerator.cpp rename : js/src/ion/CodeGenerator.h => js/src/jit/CodeGenerator.h rename : js/src/ion/CompactBuffer.h => js/src/jit/CompactBuffer.h rename : js/src/ion/CompileInfo-inl.h => js/src/jit/CompileInfo-inl.h rename : js/src/ion/CompileInfo.h => js/src/jit/CompileInfo.h rename : js/src/ion/CompilerRoot.h => js/src/jit/CompilerRoot.h rename : js/src/ion/EdgeCaseAnalysis.cpp => js/src/jit/EdgeCaseAnalysis.cpp rename : js/src/ion/EdgeCaseAnalysis.h => js/src/jit/EdgeCaseAnalysis.h rename : js/src/ion/EffectiveAddressAnalysis.cpp => js/src/jit/EffectiveAddressAnalysis.cpp rename : js/src/ion/EffectiveAddressAnalysis.h => js/src/jit/EffectiveAddressAnalysis.h rename : js/src/ion/ExecutionModeInlines.h => js/src/jit/ExecutionModeInlines.h rename : js/src/ion/FixedList.h => js/src/jit/FixedList.h rename : js/src/ion/InlineList.h => js/src/jit/InlineList.h rename : js/src/ion/Ion.cpp => js/src/jit/Ion.cpp rename : js/src/ion/Ion.h => js/src/jit/Ion.h rename : js/src/ion/IonAllocPolicy.h => js/src/jit/IonAllocPolicy.h rename : js/src/ion/IonAnalysis.cpp => js/src/jit/IonAnalysis.cpp rename : js/src/ion/IonAnalysis.h => js/src/jit/IonAnalysis.h rename : js/src/ion/IonBuilder.cpp => js/src/jit/IonBuilder.cpp rename : js/src/ion/IonBuilder.h => js/src/jit/IonBuilder.h rename : js/src/ion/IonCaches.cpp => js/src/jit/IonCaches.cpp rename : js/src/ion/IonCaches.h => js/src/jit/IonCaches.h rename : js/src/ion/IonCode.h => js/src/jit/IonCode.h rename : js/src/ion/IonCompartment.h => js/src/jit/IonCompartment.h rename : js/src/ion/IonFrameIterator-inl.h => js/src/jit/IonFrameIterator-inl.h rename : js/src/ion/IonFrameIterator.h => js/src/jit/IonFrameIterator.h rename : js/src/ion/IonFrames-inl.h => js/src/jit/IonFrames-inl.h rename : js/src/ion/IonFrames.cpp => js/src/jit/IonFrames.cpp rename : js/src/ion/IonFrames.h => js/src/jit/IonFrames.h rename : js/src/ion/IonInstrumentation.h => js/src/jit/IonInstrumentation.h rename : js/src/ion/IonLinker.h => js/src/jit/IonLinker.h rename : js/src/ion/IonMacroAssembler.cpp => js/src/jit/IonMacroAssembler.cpp rename : js/src/ion/IonMacroAssembler.h => js/src/jit/IonMacroAssembler.h rename : js/src/ion/IonSpewer.cpp => js/src/jit/IonSpewer.cpp rename : js/src/ion/IonSpewer.h => js/src/jit/IonSpewer.h rename : js/src/ion/IonTypes.h => js/src/jit/IonTypes.h rename : js/src/ion/JSONSpewer.cpp => js/src/jit/JSONSpewer.cpp rename : js/src/ion/JSONSpewer.h => js/src/jit/JSONSpewer.h rename : js/src/ion/LICM.cpp => js/src/jit/LICM.cpp rename : js/src/ion/LICM.h => js/src/jit/LICM.h rename : js/src/ion/LIR-Common.h => js/src/jit/LIR-Common.h rename : js/src/ion/LIR.cpp => js/src/jit/LIR.cpp rename : js/src/ion/LIR.h => js/src/jit/LIR.h rename : js/src/ion/LOpcodes.h => js/src/jit/LOpcodes.h rename : js/src/ion/LinearScan.cpp => js/src/jit/LinearScan.cpp rename : js/src/ion/LinearScan.h => js/src/jit/LinearScan.h rename : js/src/ion/LiveRangeAllocator.cpp => js/src/jit/LiveRangeAllocator.cpp rename : js/src/ion/LiveRangeAllocator.h => js/src/jit/LiveRangeAllocator.h rename : js/src/ion/Lowering.cpp => js/src/jit/Lowering.cpp rename : js/src/ion/Lowering.h => js/src/jit/Lowering.h rename : js/src/ion/MCallOptimize.cpp => js/src/jit/MCallOptimize.cpp rename : js/src/ion/MIR.cpp => js/src/jit/MIR.cpp rename : js/src/ion/MIR.h => js/src/jit/MIR.h rename : js/src/ion/MIRGenerator.h => js/src/jit/MIRGenerator.h rename : js/src/ion/MIRGraph.cpp => js/src/jit/MIRGraph.cpp rename : js/src/ion/MIRGraph.h => js/src/jit/MIRGraph.h rename : js/src/ion/MOpcodes.h => js/src/jit/MOpcodes.h rename : js/src/ion/MoveEmitter.h => js/src/jit/MoveEmitter.h rename : js/src/ion/MoveResolver.cpp => js/src/jit/MoveResolver.cpp rename : js/src/ion/MoveResolver.h => js/src/jit/MoveResolver.h rename : js/src/ion/ParallelFunctions.cpp => js/src/jit/ParallelFunctions.cpp rename : js/src/ion/ParallelFunctions.h => js/src/jit/ParallelFunctions.h rename : js/src/ion/ParallelSafetyAnalysis.cpp => js/src/jit/ParallelSafetyAnalysis.cpp rename : js/src/ion/ParallelSafetyAnalysis.h => js/src/jit/ParallelSafetyAnalysis.h rename : js/src/ion/PcScriptCache.h => js/src/jit/PcScriptCache.h rename : js/src/ion/PerfSpewer.cpp => js/src/jit/PerfSpewer.cpp rename : js/src/ion/PerfSpewer.h => js/src/jit/PerfSpewer.h rename : js/src/ion/RangeAnalysis.cpp => js/src/jit/RangeAnalysis.cpp rename : js/src/ion/RangeAnalysis.h => js/src/jit/RangeAnalysis.h rename : js/src/ion/RegisterAllocator.cpp => js/src/jit/RegisterAllocator.cpp rename : js/src/ion/RegisterAllocator.h => js/src/jit/RegisterAllocator.h rename : js/src/ion/RegisterSets.h => js/src/jit/RegisterSets.h rename : js/src/ion/Registers.h => js/src/jit/Registers.h rename : js/src/ion/Safepoints.cpp => js/src/jit/Safepoints.cpp rename : js/src/ion/Safepoints.h => js/src/jit/Safepoints.h rename : js/src/ion/SnapshotReader.h => js/src/jit/SnapshotReader.h rename : js/src/ion/SnapshotWriter.h => js/src/jit/SnapshotWriter.h rename : js/src/ion/Snapshots.cpp => js/src/jit/Snapshots.cpp rename : js/src/ion/StackSlotAllocator.h => js/src/jit/StackSlotAllocator.h rename : js/src/ion/StupidAllocator.cpp => js/src/jit/StupidAllocator.cpp rename : js/src/ion/StupidAllocator.h => js/src/jit/StupidAllocator.h rename : js/src/ion/TypePolicy.cpp => js/src/jit/TypePolicy.cpp rename : js/src/ion/TypePolicy.h => js/src/jit/TypePolicy.h rename : js/src/ion/UnreachableCodeElimination.cpp => js/src/jit/UnreachableCodeElimination.cpp rename : js/src/ion/UnreachableCodeElimination.h => js/src/jit/UnreachableCodeElimination.h rename : js/src/ion/VMFunctions.cpp => js/src/jit/VMFunctions.cpp rename : js/src/ion/VMFunctions.h => js/src/jit/VMFunctions.h rename : js/src/ion/ValueNumbering.cpp => js/src/jit/ValueNumbering.cpp rename : js/src/ion/ValueNumbering.h => js/src/jit/ValueNumbering.h rename : js/src/ion/arm/Architecture-arm.cpp => js/src/jit/arm/Architecture-arm.cpp rename : js/src/ion/arm/Architecture-arm.h => js/src/jit/arm/Architecture-arm.h rename : js/src/ion/arm/Assembler-arm.cpp => js/src/jit/arm/Assembler-arm.cpp rename : js/src/ion/arm/Assembler-arm.h => js/src/jit/arm/Assembler-arm.h rename : js/src/ion/arm/Bailouts-arm.cpp => js/src/jit/arm/Bailouts-arm.cpp rename : js/src/ion/arm/BaselineCompiler-arm.cpp => js/src/jit/arm/BaselineCompiler-arm.cpp rename : js/src/ion/arm/BaselineCompiler-arm.h => js/src/jit/arm/BaselineCompiler-arm.h rename : js/src/ion/arm/BaselineHelpers-arm.h => js/src/jit/arm/BaselineHelpers-arm.h rename : js/src/ion/arm/BaselineIC-arm.cpp => js/src/jit/arm/BaselineIC-arm.cpp rename : js/src/ion/arm/BaselineRegisters-arm.h => js/src/jit/arm/BaselineRegisters-arm.h rename : js/src/ion/arm/CodeGenerator-arm.cpp => js/src/jit/arm/CodeGenerator-arm.cpp rename : js/src/ion/arm/CodeGenerator-arm.h => js/src/jit/arm/CodeGenerator-arm.h rename : js/src/ion/arm/IonFrames-arm.cpp => js/src/jit/arm/IonFrames-arm.cpp rename : js/src/ion/arm/IonFrames-arm.h => js/src/jit/arm/IonFrames-arm.h rename : js/src/ion/arm/LIR-arm.h => js/src/jit/arm/LIR-arm.h rename : js/src/ion/arm/LOpcodes-arm.h => js/src/jit/arm/LOpcodes-arm.h rename : js/src/ion/arm/Lowering-arm.cpp => js/src/jit/arm/Lowering-arm.cpp rename : js/src/ion/arm/Lowering-arm.h => js/src/jit/arm/Lowering-arm.h rename : js/src/ion/arm/MacroAssembler-arm.cpp => js/src/jit/arm/MacroAssembler-arm.cpp rename : js/src/ion/arm/MacroAssembler-arm.h => js/src/jit/arm/MacroAssembler-arm.h rename : js/src/ion/arm/MoveEmitter-arm.cpp => js/src/jit/arm/MoveEmitter-arm.cpp rename : js/src/ion/arm/MoveEmitter-arm.h => js/src/jit/arm/MoveEmitter-arm.h rename : js/src/ion/arm/Trampoline-arm.cpp => js/src/jit/arm/Trampoline-arm.cpp rename : js/src/ion/shared/Assembler-shared.h => js/src/jit/shared/Assembler-shared.h rename : js/src/ion/shared/Assembler-x86-shared.cpp => js/src/jit/shared/Assembler-x86-shared.cpp rename : js/src/ion/shared/Assembler-x86-shared.h => js/src/jit/shared/Assembler-x86-shared.h rename : js/src/ion/shared/BaselineCompiler-shared.cpp => js/src/jit/shared/BaselineCompiler-shared.cpp rename : js/src/ion/shared/BaselineCompiler-shared.h => js/src/jit/shared/BaselineCompiler-shared.h rename : js/src/ion/shared/BaselineCompiler-x86-shared.cpp => js/src/jit/shared/BaselineCompiler-x86-shared.cpp rename : js/src/ion/shared/BaselineCompiler-x86-shared.h => js/src/jit/shared/BaselineCompiler-x86-shared.h rename : js/src/ion/shared/BaselineIC-x86-shared.cpp => js/src/jit/shared/BaselineIC-x86-shared.cpp rename : js/src/ion/shared/CodeGenerator-shared-inl.h => js/src/jit/shared/CodeGenerator-shared-inl.h rename : js/src/ion/shared/CodeGenerator-shared.cpp => js/src/jit/shared/CodeGenerator-shared.cpp rename : js/src/ion/shared/CodeGenerator-shared.h => js/src/jit/shared/CodeGenerator-shared.h rename : js/src/ion/shared/CodeGenerator-x86-shared.cpp => js/src/jit/shared/CodeGenerator-x86-shared.cpp rename : js/src/ion/shared/CodeGenerator-x86-shared.h => js/src/jit/shared/CodeGenerator-x86-shared.h rename : js/src/ion/shared/IonAssemblerBuffer.h => js/src/jit/shared/IonAssemblerBuffer.h rename : js/src/ion/shared/IonAssemblerBufferWithConstantPools.h => js/src/jit/shared/IonAssemblerBufferWithConstantPools.h rename : js/src/ion/shared/IonFrames-shared.h => js/src/jit/shared/IonFrames-shared.h rename : js/src/ion/shared/IonFrames-x86-shared.cpp => js/src/jit/shared/IonFrames-x86-shared.cpp rename : js/src/ion/shared/IonFrames-x86-shared.h => js/src/jit/shared/IonFrames-x86-shared.h rename : js/src/ion/shared/LIR-x86-shared.h => js/src/jit/shared/LIR-x86-shared.h rename : js/src/ion/shared/Lowering-shared-inl.h => js/src/jit/shared/Lowering-shared-inl.h rename : js/src/ion/shared/Lowering-shared.cpp => js/src/jit/shared/Lowering-shared.cpp rename : js/src/ion/shared/Lowering-shared.h => js/src/jit/shared/Lowering-shared.h rename : js/src/ion/shared/Lowering-x86-shared.cpp => js/src/jit/shared/Lowering-x86-shared.cpp rename : js/src/ion/shared/Lowering-x86-shared.h => js/src/jit/shared/Lowering-x86-shared.h rename : js/src/ion/shared/MacroAssembler-x86-shared.h => js/src/jit/shared/MacroAssembler-x86-shared.h rename : js/src/ion/shared/MoveEmitter-x86-shared.cpp => js/src/jit/shared/MoveEmitter-x86-shared.cpp rename : js/src/ion/shared/MoveEmitter-x86-shared.h => js/src/jit/shared/MoveEmitter-x86-shared.h rename : js/src/ion/x64/Architecture-x64.h => js/src/jit/x64/Architecture-x64.h rename : js/src/ion/x64/Assembler-x64.cpp => js/src/jit/x64/Assembler-x64.cpp rename : js/src/ion/x64/Assembler-x64.h => js/src/jit/x64/Assembler-x64.h rename : js/src/ion/x64/Bailouts-x64.cpp => js/src/jit/x64/Bailouts-x64.cpp rename : js/src/ion/x64/BaselineCompiler-x64.cpp => js/src/jit/x64/BaselineCompiler-x64.cpp rename : js/src/ion/x64/BaselineCompiler-x64.h => js/src/jit/x64/BaselineCompiler-x64.h rename : js/src/ion/x64/BaselineHelpers-x64.h => js/src/jit/x64/BaselineHelpers-x64.h rename : js/src/ion/x64/BaselineIC-x64.cpp => js/src/jit/x64/BaselineIC-x64.cpp rename : js/src/ion/x64/BaselineRegisters-x64.h => js/src/jit/x64/BaselineRegisters-x64.h rename : js/src/ion/x64/CodeGenerator-x64.cpp => js/src/jit/x64/CodeGenerator-x64.cpp rename : js/src/ion/x64/CodeGenerator-x64.h => js/src/jit/x64/CodeGenerator-x64.h rename : js/src/ion/x64/LIR-x64.h => js/src/jit/x64/LIR-x64.h rename : js/src/ion/x64/LOpcodes-x64.h => js/src/jit/x64/LOpcodes-x64.h rename : js/src/ion/x64/Lowering-x64.cpp => js/src/jit/x64/Lowering-x64.cpp rename : js/src/ion/x64/Lowering-x64.h => js/src/jit/x64/Lowering-x64.h rename : js/src/ion/x64/MacroAssembler-x64.cpp => js/src/jit/x64/MacroAssembler-x64.cpp rename : js/src/ion/x64/MacroAssembler-x64.h => js/src/jit/x64/MacroAssembler-x64.h rename : js/src/ion/x64/Trampoline-x64.cpp => js/src/jit/x64/Trampoline-x64.cpp rename : js/src/ion/x86/Architecture-x86.h => js/src/jit/x86/Architecture-x86.h rename : js/src/ion/x86/Assembler-x86.cpp => js/src/jit/x86/Assembler-x86.cpp rename : js/src/ion/x86/Assembler-x86.h => js/src/jit/x86/Assembler-x86.h rename : js/src/ion/x86/Bailouts-x86.cpp => js/src/jit/x86/Bailouts-x86.cpp rename : js/src/ion/x86/BaselineCompiler-x86.cpp => js/src/jit/x86/BaselineCompiler-x86.cpp rename : js/src/ion/x86/BaselineCompiler-x86.h => js/src/jit/x86/BaselineCompiler-x86.h rename : js/src/ion/x86/BaselineHelpers-x86.h => js/src/jit/x86/BaselineHelpers-x86.h rename : js/src/ion/x86/BaselineIC-x86.cpp => js/src/jit/x86/BaselineIC-x86.cpp rename : js/src/ion/x86/BaselineRegisters-x86.h => js/src/jit/x86/BaselineRegisters-x86.h rename : js/src/ion/x86/CodeGenerator-x86.cpp => js/src/jit/x86/CodeGenerator-x86.cpp rename : js/src/ion/x86/CodeGenerator-x86.h => js/src/jit/x86/CodeGenerator-x86.h rename : js/src/ion/x86/LIR-x86.h => js/src/jit/x86/LIR-x86.h rename : js/src/ion/x86/LOpcodes-x86.h => js/src/jit/x86/LOpcodes-x86.h rename : js/src/ion/x86/Lowering-x86.cpp => js/src/jit/x86/Lowering-x86.cpp rename : js/src/ion/x86/Lowering-x86.h => js/src/jit/x86/Lowering-x86.h rename : js/src/ion/x86/MacroAssembler-x86.cpp => js/src/jit/x86/MacroAssembler-x86.cpp rename : js/src/ion/x86/MacroAssembler-x86.h => js/src/jit/x86/MacroAssembler-x86.h rename : js/src/ion/x86/Trampoline-x86.cpp => js/src/jit/x86/Trampoline-x86.cpp
2013-08-08 10:37:11 -07:00
#include "jit/AsmJSLink.h"
#include "jit/BaselineJIT.h"
#include "vm/ScopeObject.h"
#include "jscompartmentinlines.h"
#include "vm/Shape-inl.h"
namespace js {
2011-11-14 13:03:50 -08:00
inline
Bindings::Bindings()
: callObjShape_(nullptr), bindingArrayAndFlag_(TEMPORARY_STORAGE_BIT), numArgs_(0), numVars_(0)
2011-11-14 13:03:50 -08:00
{}
inline
AliasedFormalIter::AliasedFormalIter(JSScript *script)
: begin_(script->bindingArray()),
p_(begin_),
end_(begin_ + (script->funHasAnyAliasedFormal() ? script->numArgs() : 0)),
slot_(CallObject::RESERVED_SLOTS)
{
settle();
}
inline void
ScriptCounts::destroy(FreeOp *fop)
{
fop->free_(pcCountsVector);
fop->delete_(ionCounts);
}
void
SetFrameArgumentsObject(JSContext *cx, AbstractFramePtr frame,
HandleScript script, JSObject *argsobj);
} // namespace js
2009-09-10 07:22:20 -07:00
inline void
JSScript::setFunction(JSFunction *fun)
{
JS_ASSERT(fun->isTenured());
function_ = fun;
}
2009-09-10 07:22:20 -07:00
inline JSFunction *
JSScript::getFunction(size_t index)
{
JSFunction *fun = &getObject(index)->as<JSFunction>();
#ifdef DEBUG
JS_ASSERT_IF(fun->isNative(), IsAsmJSModuleNative(fun->native()));
#endif
return fun;
2009-09-10 07:22:20 -07:00
}
inline JSFunction *
JSScript::getCallerFunction()
{
JS_ASSERT(savedCallerFun());
return getFunction(0);
}
inline JSFunction *
JSScript::functionOrCallerFunction()
{
if (function())
return function();
if (savedCallerFun())
return getCallerFunction();
return nullptr;
}
inline js::RegExpObject *
2009-09-10 07:22:20 -07:00
JSScript::getRegExp(size_t index)
{
js::ObjectArray *arr = regexps();
JS_ASSERT(uint32_t(index) < arr->length);
JSObject *obj = arr->vector[index];
JS_ASSERT(obj->is<js::RegExpObject>());
return (js::RegExpObject *) obj;
}
inline js::GlobalObject &
JSScript::global() const
{
/*
* A JSScript always marks its compartment's global (via bindings) so we
* can assert that maybeGlobal is non-null here.
*/
js::AutoThreadSafeAccess ts(this);
return *compartment()->maybeGlobal();
}
inline JSPrincipals *
JSScript::principals()
{
return compartment()->principals;
}
inline JSFunction *
JSScript::originalFunction() const {
if (!isCallsiteClone())
return nullptr;
return &enclosingScopeOrOriginalFunction_->as<JSFunction>();
}
inline void
JSScript::setIsCallsiteClone(JSObject *fun) {
JS_ASSERT(shouldCloneAtCallsite());
shouldCloneAtCallsite_ = false;
isCallsiteClone_ = true;
JS_ASSERT(isCallsiteClone());
JS_ASSERT(fun->is<JSFunction>());
enclosingScopeOrOriginalFunction_ = fun;
}
inline void
JSScript::setBaselineScript(JSContext *maybecx, js::jit::BaselineScript *baselineScript) {
#ifdef JS_ION
if (hasBaselineScript())
js::jit::BaselineScript::writeBarrierPre(tenuredZone(), baseline);
#endif
mozilla::Maybe<js::AutoLockForCompilation> lock;
if (maybecx)
lock.construct(maybecx);
baseline = baselineScript;
updateBaselineOrIonRaw();
}
#endif /* jsscriptinlines_h */