Ignore:
Timestamp:
Sep 26, 2016, 4:56:37 PM (9 years ago)
Author:
[email protected]
Message:

Add some needed CatchScopes in code that should not throw.
https://bugs.webkit.org/show_bug.cgi?id=162584

Reviewed by Keith Miller.

  • API/JSObjectRef.cpp:

(JSObjectSetProperty):

  • This function already handles exceptions in its own way. We're honoring this contract and catching exceptions and passing it to the handler.
  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):

  • The debugger should not be throwing any exceptions.
  • jsc.cpp:

(runJSC):

  • the buck stops here. There's no reason an exception should propagate past here.
  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::save):

  • If an exception was thrown while saving the database, there's nothing we can really do about it anyway. Just fail nicely and return false. This is in line with existing error checking code in Database::save() that returns false if it's not able to open the file to save to.
  • runtime/ExceptionHelpers.cpp:

(JSC::createError):

  • If we're not able to stringify the error value, then we'll just use the provided message as the error string. It doesn't make sense to have the Error factory throw an exception that shadows the intended exception that the client probably wants to throw (assuming that that's why the client is creating this Error object).
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::finishCreation):

  • The existing code already RELEASE_ASSERT that no exception was thrown. Hence, it's appropriate to use a CatchScope here.
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::StackFrame::nameFromCallee):

  • The sampling profiler is doing a VMInquiry get here. It should never throw an exception. Hence, we'll just use a CatchScope and assert accordingly.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r206401 r206405  
     12016-09-26  Mark Lam  <[email protected]>
     2
     3        Add some needed CatchScopes in code that should not throw.
     4        https://bugs.webkit.org/show_bug.cgi?id=162584
     5
     6        Reviewed by Keith Miller.
     7
     8        * API/JSObjectRef.cpp:
     9        (JSObjectSetProperty):
     10        - This function already handles exceptions in its own way.  We're honoring this
     11          contract and catching exceptions and passing it to the handler.
     12
     13        * interpreter/Interpreter.cpp:
     14        (JSC::notifyDebuggerOfUnwinding):
     15        - The debugger should not be throwing any exceptions.
     16
     17        * jsc.cpp:
     18        (runJSC):
     19        - the buck stops here.  There's no reason an exception should propagate past here.
     20
     21        * profiler/ProfilerDatabase.cpp:
     22        (JSC::Profiler::Database::save):
     23        - If an exception was thrown while saving the database, there's nothing we can
     24          really do about it anyway.  Just fail nicely and return false.  This is in line
     25          with existing error checking code in Database::save() that returns false if
     26          it's not able to open the file to save to.
     27
     28        * runtime/ExceptionHelpers.cpp:
     29        (JSC::createError):
     30        - If we're not able to stringify the error value, then we'll just use the
     31          provided message as the error string.  It doesn't make sense to have the
     32          Error factory throw an exception that shadows the intended exception that the
     33          client probably wants to throw (assuming that that's why the client is creating
     34          this Error object).
     35
     36        * runtime/JSModuleLoader.cpp:
     37        (JSC::JSModuleLoader::finishCreation):
     38        - The existing code already RELEASE_ASSERT that no exception was thrown.
     39          Hence, it's appropriate to use a CatchScope here.
     40
     41        * runtime/SamplingProfiler.cpp:
     42        (JSC::SamplingProfiler::StackFrame::nameFromCallee):
     43        - The sampling profiler is doing a VMInquiry get here.  It should never throw an
     44          exception.  Hence, we'll just use a CatchScope and assert accordingly.
     45
    1462016-09-26  Mark Lam  <[email protected]>
    247
Note: See TracChangeset for help on using the changeset viewer.