Bug 808519 part 2 - Rename MaybeScriptFromCalleeToken and call it in GetTopIonJSScript. r=dvander

This commit is contained in:
Jan de Mooij 2012-11-05 17:35:30 +01:00
Родитель 1a9d9157e0
Коммит 56817aeb78
3 изменённых файлов: 17 добавлений и 29 удалений

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

@ -97,19 +97,9 @@ GetTopIonJSScript(JSContext *cx, const SafepointIndex **safepointIndexOut, void
if (returnAddrOut)
*returnAddrOut = (void *) iter.returnAddressToFp();
JS_ASSERT(iter.type() == IonFrame_OptimizedJS);
JS_ASSERT(iter.isScripted());
IonJSFrameLayout *frame = static_cast<IonJSFrameLayout*>(iter.current());
switch (GetCalleeTokenTag(frame->calleeToken())) {
case CalleeToken_Function: {
JSFunction *fun = CalleeTokenToFunction(frame->calleeToken());
return fun->script();
}
case CalleeToken_Script:
return CalleeTokenToScript(frame->calleeToken());
default:
JS_NOT_REACHED("unexpected callee token kind");
return NULL;
}
return ScriptFromCalleeToken(frame->calleeToken());
}
} // namespace ion

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

@ -26,20 +26,6 @@
using namespace js;
using namespace js::ion;
JSScript *
ion::MaybeScriptFromCalleeToken(CalleeToken token)
{
AutoAssertNoGC nogc;
switch (GetCalleeTokenTag(token)) {
case CalleeToken_Script:
return CalleeTokenToScript(token);
case CalleeToken_Function:
return CalleeTokenToFunction(token)->script();
}
JS_NOT_REACHED("invalid callee token tag");
return NULL;
}
IonFrameIterator::IonFrameIterator(const IonActivationIterator &activations)
: current_(activations.top()),
type_(IonFrame_Exit),
@ -174,7 +160,7 @@ IonFrameIterator::script() const
{
AutoAssertNoGC nogc;
JS_ASSERT(isScripted());
RawScript script = MaybeScriptFromCalleeToken(calleeToken());
RawScript script = ScriptFromCalleeToken(calleeToken());
JS_ASSERT(script);
return script;
}

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

@ -63,8 +63,20 @@ CalleeTokenToScript(CalleeToken token)
JS_ASSERT(GetCalleeTokenTag(token) == CalleeToken_Script);
return (JSScript *)(uintptr_t(token) & ~uintptr_t(0x3));
}
JSScript *
MaybeScriptFromCalleeToken(CalleeToken token);
static inline JSScript *
ScriptFromCalleeToken(CalleeToken token)
{
AutoAssertNoGC nogc;
switch (GetCalleeTokenTag(token)) {
case CalleeToken_Script:
return CalleeTokenToScript(token);
case CalleeToken_Function:
return CalleeTokenToFunction(token)->script();
}
JS_NOT_REACHED("invalid callee token tag");
return NULL;
}
// In between every two frames lies a small header describing both frames. This
// header, minimally, contains a returnAddress word and a descriptor word. The