Bug 944975: cleanup rename JSScript originalFunction to donorFunction (r=shu).

The motivation here is to distinguish the two kinds of methods: one
that assumes the receiver is a clone versus another that assumes
nothing about the receiver. I.e., something along the lines of:

  clone.originalFunction() == clone.donorFunction()
  nonclone.donorFunction() == null
  nonclone.originalFunction() == nonclone
This commit is contained in:
Felix S. Klock II 2014-02-07 17:56:42 +01:00
Родитель 2e24dda145
Коммит ff17d0edab
4 изменённых файлов: 9 добавлений и 6 удалений

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

@ -285,7 +285,7 @@ CanEnterBaselineJIT(JSContext *cx, HandleScript script, bool osr)
if (script->isCallsiteClone()) {
// Ensure the original function is compiled too, so that bailouts from
// Ion code have a BaselineScript to resume into.
RootedScript original(cx, script->originalFunction()->nonLazyScript());
RootedScript original(cx, script->donorFunction()->nonLazyScript());
JS_ASSERT(original != script);
if (!original->canBaselineCompile())

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

@ -339,11 +339,11 @@ class JSFunction : public JSObject
return u.i.s.script_;
}
// Returns the non-callsited-clone version of this function. Use
// when return-value can flow to arbitrary JS (see Bug 944975).
// Returns non-callsited-clone version of this. Use when return
// value can flow to arbitrary JS (see Bug 944975).
JSFunction* originalFunction() {
if (this->hasScript() && this->nonLazyScript()->isCallsiteClone()) {
return this->nonLazyScript()->originalFunction();
return this->nonLazyScript()->donorFunction();
} else {
return this;
}

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

@ -1273,7 +1273,10 @@ class JSScript : public js::gc::BarrieredCell<JSScript>
*/
inline void ensureNonLazyCanonicalFunction(JSContext *cx);
JSFunction *originalFunction() const;
/*
* Donor provided itself to callsite clone; null if this is non-clone.
*/
JSFunction *donorFunction() const;
void setIsCallsiteClone(JSObject *fun);
JSFlatString *sourceData(JSContext *cx);

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

@ -149,7 +149,7 @@ JSScript::principals()
}
inline JSFunction *
JSScript::originalFunction() const {
JSScript::donorFunction() const {
if (!isCallsiteClone())
return nullptr;
return &enclosingScopeOrOriginalFunction_->as<JSFunction>();