mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-01 17:41:34 +00:00
91 lines
2.4 KiB
C++
91 lines
2.4 KiB
C++
/* -*- 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 */
|