Changeset 209007 in webkit


Ignore:
Timestamp:
Nov 28, 2016 12:44:25 PM (7 years ago)
Author:
mark.lam@apple.com
Message:

Fix exception scope verification failures in LLIntSlowPaths.cpp.
https://bugs.webkit.org/show_bug.cgi?id=164969

Reviewed by Geoffrey Garen.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::getByVal):
(JSC::LLInt::setUpCall):
(JSC::LLInt::varargsSetup):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r208985 r209007  
     12016-11-28  Mark Lam  <mark.lam@apple.com>
     2
     3        Fix exception scope verification failures in LLIntSlowPaths.cpp.
     4        https://bugs.webkit.org/show_bug.cgi?id=164969
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        * llint/LLIntSlowPaths.cpp:
     9        (JSC::LLInt::getByVal):
     10        (JSC::LLInt::setUpCall):
     11        (JSC::LLInt::varargsSetup):
     12        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
     13
    1142016-11-26  Yusuke Suzuki  <utatane.tea@gmail.com>
    215
  • trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp

    r208985 r209007  
    815815        if (isJSString(baseValue) && asString(baseValue)->canGetIndex(i))
    816816            return asString(baseValue)->getIndex(exec, i);
    817        
     817        scope.release();
    818818        return baseValue.get(exec, i);
    819819    }
     
    823823    auto property = subscript.toPropertyKey(exec);
    824824    RETURN_IF_EXCEPTION(scope, JSValue());
     825    scope.release();
    825826    return baseValue.get(exec, property);
    826827}
     
    13071308        CodeBlock** codeBlockSlot = execCallee->addressOfCodeBlock();
    13081309        JSObject* error = functionExecutable->prepareForExecution<FunctionExecutable>(vm, callee, scope, kind, *codeBlockSlot);
    1309         if (error)
     1310        ASSERT(throwScope.exception() == error);
     1311        if (UNLIKELY(error))
    13101312            LLINT_CALL_THROW(exec, error);
    13111313        codeBlock = *codeBlockSlot;
     
    14471449    exec->setCurrentVPC(pc);
    14481450
     1451    throwScope.release();
    14491452    return setUpCall(execCallee, pc, kind, calleeAsValue);
    14501453}
     
    14801483    exec->setCurrentVPC(pc);
    14811484   
    1482     if (!isHostFunction(calleeAsValue, globalFuncEval))
     1485    if (!isHostFunction(calleeAsValue, globalFuncEval)) {
     1486        throwScope.release();
    14831487        return setUpCall(execCallee, pc, CodeForCall, calleeAsValue);
     1488    }
    14841489   
    14851490    vm.hostCallReturnValue = eval(execCallee);
     
    15861591
    15871592    bool hasProperty = scope->hasProperty(exec, ident);
     1593    LLINT_CHECK_EXCEPTION();
    15881594    if (hasProperty
    15891595        && scope->isGlobalLexicalEnvironment()
Note: See TracChangeset for help on using the changeset viewer.