Bug 1234845 part 7 - Simplify isGlobalFrame and isModuleFrame. r=jonco

This commit is contained in:
Jan de Mooij 2016-01-18 10:23:50 +01:00
Родитель 063ad0b899
Коммит 1190d0cad6
6 изменённых файлов: 29 добавлений и 49 удалений

Просмотреть файл

@ -372,9 +372,11 @@ class BaselineFrame
void trace(JSTracer* trc, JitFrameIterator& frame);
bool isGlobalOrModuleFrame() const {
MOZ_ASSERT(!isEvalFrame());
return !CalleeTokenIsFunction(calleeToken());
bool isGlobalFrame() const {
return script()->isGlobalCode();
}
bool isModuleFrame() const {
return script()->module();
}
bool isEvalFrame() const {
return script()->isForEval();

Просмотреть файл

@ -141,8 +141,11 @@ class RematerializedFrame
bool isFunctionFrame() const {
return !!script_->functionNonDelazifying();
}
bool isGlobalOrModuleFrame() const {
return !isFunctionFrame();
bool isGlobalFrame() const {
return script_->isGlobalCode();
}
bool isModuleFrame() const {
return script_->module();
}
JSScript* script() const {

Просмотреть файл

@ -1294,20 +1294,20 @@ class JSScript : public js::gc::TenuredCell
// The fixed part of a stack frame is comprised of vars (in function and
// module code) and block-scoped locals (in all kinds of code).
size_t nfixed() const {
return isGlobalCode() ? bindings.numBlockScoped() : bindings.numFixedLocals();
return isGlobalOrEvalCode() ? bindings.numBlockScoped() : bindings.numFixedLocals();
}
// Number of fixed slots reserved for vars. Only nonzero for function
// or module code.
size_t nfixedvars() const {
return isGlobalCode() ? 0 : bindings.numUnaliasedVars();
return isGlobalOrEvalCode() ? 0 : bindings.numUnaliasedVars();
}
// Number of fixed slots reserved for body-level lexicals and vars. This
// value minus nfixedvars() is the number of body-level lexicals. Only
// nonzero for function or module code.
size_t nbodyfixed() const {
return isGlobalCode() ? 0 : bindings.numUnaliasedBodyLevelLocals();
return isGlobalOrEvalCode() ? 0 : bindings.numUnaliasedBodyLevelLocals();
}
// Calculate the number of fixed slots that are live at a particular bytecode.
@ -1642,9 +1642,12 @@ class JSScript : public js::gc::TenuredCell
}
inline void setModule(js::ModuleObject* module);
bool isGlobalCode() const {
bool isGlobalOrEvalCode() const {
return !function_ && !module_;
}
bool isGlobalCode() const {
return isGlobalOrEvalCode() && !isForEval();
}
// Returns true if the script may read formal arguments on the stack
// directly, via lazy arguments or a rest parameter.

Просмотреть файл

@ -563,26 +563,24 @@ AbstractFramePtr::createSingleton() const
return false;
}
inline bool
AbstractFramePtr::isGlobalOrModuleFrame() const
{
if (isInterpreterFrame())
return asInterpreterFrame()->isGlobalOrModuleFrame();
if (isBaselineFrame())
return asBaselineFrame()->isGlobalOrModuleFrame();
return asRematerializedFrame()->isGlobalOrModuleFrame();
}
inline bool
AbstractFramePtr::isGlobalFrame() const
{
return isGlobalOrModuleFrame() && !script()->module();
if (isInterpreterFrame())
return asInterpreterFrame()->isGlobalFrame();
if (isBaselineFrame())
return asBaselineFrame()->isGlobalFrame();
return asRematerializedFrame()->isGlobalFrame();
}
inline bool
AbstractFramePtr::isModuleFrame() const
{
return isGlobalOrModuleFrame() && script()->module();
if (isInterpreterFrame())
return asInterpreterFrame()->isModuleFrame();
if (isBaselineFrame())
return asBaselineFrame()->isModuleFrame();
return asRematerializedFrame()->isModuleFrame();
}
inline bool

Просмотреть файл

@ -840,25 +840,6 @@ FrameIter::compartment() const
MOZ_CRASH("Unexpected state");
}
bool
FrameIter::isGlobalOrModuleFrame() const
{
switch (data_.state_) {
case DONE:
break;
case INTERP:
return interpFrame()->isGlobalOrModuleFrame();
case JIT:
if (data_.jitFrames_.isBaselineJS())
return data_.jitFrames_.baselineFrame()->isGlobalOrModuleFrame();
MOZ_ASSERT(!script()->isForEval());
return script()->isGlobalCode();
case WASM:
return false;
}
MOZ_CRASH("Unexpected state");
}
bool
FrameIter::isEvalFrame() const
{

Просмотреть файл

@ -202,7 +202,6 @@ class AbstractFramePtr
inline JSCompartment* compartment() const;
inline bool hasCallObj() const;
inline bool isGlobalOrModuleFrame() const;
inline bool isGlobalFrame() const;
inline bool isModuleFrame() const;
inline bool isEvalFrame() const;
@ -459,17 +458,12 @@ class InterpreterFrame
* eval frame: execution of eval code
*/
bool isGlobalOrModuleFrame() const {
MOZ_ASSERT(!isEvalFrame());
return !!(flags_ & GLOBAL_OR_MODULE);
}
bool isGlobalFrame() const {
return isGlobalOrModuleFrame() && !script()->module();
return script_->isGlobalCode();
}
bool isModuleFrame() const {
return isGlobalOrModuleFrame() && script()->module();
return script_->module();
}
bool isEvalFrame() const {
@ -1826,7 +1820,6 @@ class FrameIter
inline bool isBaseline() const;
inline bool isPhysicalIonFrame() const;
bool isGlobalOrModuleFrame() const;
bool isEvalFrame() const;
bool isFunctionFrame() const;
bool hasArgs() const { return isFunctionFrame(); }