gecko-dev/js/src/jsscriptinlines.h

177 lines
4.2 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 11:12:37 +00: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 17:37:11 +00: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 21:03:50 +00:00
inline
Bindings::Bindings()
: callObjShape_(nullptr), bindingArrayAndFlag_(TEMPORARY_STORAGE_BIT),
numArgs_(0), numBlockScoped_(0), numVars_(0)
2011-11-14 21:03:50 +00: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);
inline JSFunction *
LazyScript::functionDelazifying(JSContext *cx) const
{
if (function_ && !function_->getOrCreateScript(cx))
return nullptr;
return function_;
}
} // namespace js
2009-09-10 14:22:20 +00:00
inline JSFunction *
JSScript::functionDelazifying() const
{
if (function_ && function_->isInterpretedLazy()) {
function_->setUnlazifiedScript(const_cast<JSScript *>(this));
// If this script has a LazyScript, make sure the LazyScript has a
// reference to the script when delazifying its canonical function.
if (lazyScript && !lazyScript->maybeScript())
lazyScript->initScript(const_cast<JSScript *>(this));
}
return function_;
}
inline void
JSScript::setFunction(JSFunction *fun)
{
JS_ASSERT(fun->isTenured());
function_ = fun;
}
inline void
JSScript::ensureNonLazyCanonicalFunction(JSContext *cx)
{
// Infallibly delazify the canonical script.
if (function_ && function_->isInterpretedLazy())
functionDelazifying();
}
2009-09-10 14:22:20 +00:00
inline JSFunction *
JSScript::getFunction(size_t index)
{
JSFunction *fun = &getObject(index)->as<JSFunction>();
JS_ASSERT_IF(fun->isNative(), IsAsmJSModuleNative(fun->native()));
return fun;
2009-09-10 14:22:20 +00:00
}
inline JSFunction *
JSScript::getCallerFunction()
{
JS_ASSERT(savedCallerFun());
return getFunction(0);
}
inline JSFunction *
JSScript::functionOrCallerFunction()
{
if (functionNonDelazifying())
return functionNonDelazifying();
if (savedCallerFun())
return getCallerFunction();
return nullptr;
}
inline js::RegExpObject *
2009-09-10 14:22:20 +00: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::RegExpObject *
JSScript::getRegExp(jsbytecode *pc)
{
JS_ASSERT(containsPC(pc) && containsPC(pc + sizeof(uint32_t)));
return getRegExp(GET_UINT32_INDEX(pc));
}
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.
*/
return *compartment()->maybeGlobal();
}
inline JSPrincipals *
JSScript::principals()
{
return compartment()->principals;
}
inline JSFunction *
JSScript::donorFunction() 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
MOZ_ASSERT(!hasIonScript());
baseline = baselineScript;
updateBaselineOrIonRaw();
}
#endif /* jsscriptinlines_h */