/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * vim: set ts=8 sts=4 et sw=4 tw=99: * 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 jit_CompileInfo_inl_h #define jit_CompileInfo_inl_h #include "jit/CompileInfo.h" #include "jit/JitAllocPolicy.h" #include "jsscriptinlines.h" namespace js { namespace jit { inline RegExpObject* CompileInfo::getRegExp(jsbytecode* pc) const { return script_->getRegExp(pc); } inline JSFunction* CompileInfo::getFunction(jsbytecode* pc) const { return script_->getFunction(GET_UINT32_INDEX(pc)); } InlineScriptTree* InlineScriptTree::New(TempAllocator* allocator, InlineScriptTree* callerTree, jsbytecode* callerPc, JSScript* script) { MOZ_ASSERT_IF(!callerTree, !callerPc); MOZ_ASSERT_IF(callerTree, callerTree->script()->containsPC(callerPc)); // Allocate a new InlineScriptTree void* treeMem = allocator->allocate(sizeof(InlineScriptTree)); if (!treeMem) return nullptr; // Initialize it. return new (treeMem) InlineScriptTree(callerTree, callerPc, script); } InlineScriptTree* InlineScriptTree::addCallee(TempAllocator* allocator, jsbytecode* callerPc, JSScript* calleeScript) { MOZ_ASSERT(script_ && script_->containsPC(callerPc)); InlineScriptTree* calleeTree = New(allocator, this, callerPc, calleeScript); if (!calleeTree) return nullptr; calleeTree->nextCallee_ = children_; children_ = calleeTree; return calleeTree; } static inline const char* AnalysisModeString(AnalysisMode mode) { switch (mode) { case Analysis_None: return "Analysis_None"; case Analysis_DefiniteProperties: return "Analysis_DefiniteProperties"; case Analysis_ArgumentsUsage: return "Analysis_ArgumentsUsage"; default: MOZ_CRASH("Invalid AnalysisMode"); } } static inline bool CanIonCompile(JSScript* script, AnalysisMode mode) { switch (mode) { case Analysis_None: return script->canIonCompile(); case Analysis_DefiniteProperties: return true; case Analysis_ArgumentsUsage: return true; default:; } MOZ_CRASH("Invalid AnalysisMode"); } } // namespace jit } // namespace js #endif /* jit_CompileInfo_inl_h */