Title: [287624] branches/safari-612-branch
Revision
287624
Author
repst...@apple.com
Date
2022-01-05 10:20:53 -0800 (Wed, 05 Jan 2022)

Log Message

Cherry-pick r286249. rdar://problem/87124979

    [JSC] private name operation should use RETURN_IF_EXCEPTION
    https://bugs.webkit.org/show_bug.cgi?id=233577
    rdar://85813869

    Reviewed by Mark Lam.

    JSTests:

    * stress/termination-error-in-private-name.js: Added.
    (C):

    Source/_javascript_Core:

    Because of TerminatedExecutionError, error can be thrown at any time.

    * jit/JITOperations.cpp:
    (JSC::JSC_DEFINE_JIT_OPERATION):
    (JSC::putPrivateNameOptimize):
    (JSC::putPrivateName):
    * llint/LLIntSlowPaths.cpp:
    (JSC::LLInt::LLINT_SLOW_PATH_DECL):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286249 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Added Paths

Diff

Modified: branches/safari-612-branch/JSTests/ChangeLog (287623 => 287624)


--- branches/safari-612-branch/JSTests/ChangeLog	2022-01-05 18:20:50 UTC (rev 287623)
+++ branches/safari-612-branch/JSTests/ChangeLog	2022-01-05 18:20:53 UTC (rev 287624)
@@ -1,5 +1,44 @@
 2022-01-05  Russell Epstein  <repst...@apple.com>
 
+        Cherry-pick r286249. rdar://problem/87124979
+
+    [JSC] private name operation should use RETURN_IF_EXCEPTION
+    https://bugs.webkit.org/show_bug.cgi?id=233577
+    rdar://85813869
+    
+    Reviewed by Mark Lam.
+    
+    JSTests:
+    
+    * stress/termination-error-in-private-name.js: Added.
+    (C):
+    
+    Source/_javascript_Core:
+    
+    Because of TerminatedExecutionError, error can be thrown at any time.
+    
+    * jit/JITOperations.cpp:
+    (JSC::JSC_DEFINE_JIT_OPERATION):
+    (JSC::putPrivateNameOptimize):
+    (JSC::putPrivateName):
+    * llint/LLIntSlowPaths.cpp:
+    (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286249 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-11-29  Yusuke Suzuki  <ysuz...@apple.com>
+
+            [JSC] private name operation should use RETURN_IF_EXCEPTION
+            https://bugs.webkit.org/show_bug.cgi?id=233577
+            rdar://85813869
+
+            Reviewed by Mark Lam.
+
+            * stress/termination-error-in-private-name.js: Added.
+            (C):
+
+2022-01-05  Russell Epstein  <repst...@apple.com>
+
         Cherry-pick r286228. rdar://problem/87125189
 
     [JSC] GetTypedArrayLengthAsInt52 can get Array::Generic ArrayMode

Added: branches/safari-612-branch/JSTests/stress/termination-error-in-private-name.js (0 => 287624)


--- branches/safari-612-branch/JSTests/stress/termination-error-in-private-name.js	                        (rev 0)
+++ branches/safari-612-branch/JSTests/stress/termination-error-in-private-name.js	2022-01-05 18:20:53 UTC (rev 287624)
@@ -0,0 +1,14 @@
+//@ runDefault("--watchdog=2", "--watchdog-exception-ok")
+
+class C {
+  #field;
+
+  constructor() {
+    gc();
+    #field in this;
+  }
+}
+
+for (let i = 0; i < 1000; i++) {
+  new C();
+}

Modified: branches/safari-612-branch/Source/_javascript_Core/ChangeLog (287623 => 287624)


--- branches/safari-612-branch/Source/_javascript_Core/ChangeLog	2022-01-05 18:20:50 UTC (rev 287623)
+++ branches/safari-612-branch/Source/_javascript_Core/ChangeLog	2022-01-05 18:20:53 UTC (rev 287624)
@@ -1,5 +1,50 @@
 2022-01-05  Russell Epstein  <repst...@apple.com>
 
+        Cherry-pick r286249. rdar://problem/87124979
+
+    [JSC] private name operation should use RETURN_IF_EXCEPTION
+    https://bugs.webkit.org/show_bug.cgi?id=233577
+    rdar://85813869
+    
+    Reviewed by Mark Lam.
+    
+    JSTests:
+    
+    * stress/termination-error-in-private-name.js: Added.
+    (C):
+    
+    Source/_javascript_Core:
+    
+    Because of TerminatedExecutionError, error can be thrown at any time.
+    
+    * jit/JITOperations.cpp:
+    (JSC::JSC_DEFINE_JIT_OPERATION):
+    (JSC::putPrivateNameOptimize):
+    (JSC::putPrivateName):
+    * llint/LLIntSlowPaths.cpp:
+    (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286249 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-11-29  Yusuke Suzuki  <ysuz...@apple.com>
+
+            [JSC] private name operation should use RETURN_IF_EXCEPTION
+            https://bugs.webkit.org/show_bug.cgi?id=233577
+            rdar://85813869
+
+            Reviewed by Mark Lam.
+
+            Because of TerminatedExecutionError, error can be thrown at any time.
+
+            * jit/JITOperations.cpp:
+            (JSC::JSC_DEFINE_JIT_OPERATION):
+            (JSC::putPrivateNameOptimize):
+            (JSC::putPrivateName):
+            * llint/LLIntSlowPaths.cpp:
+            (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+
+2022-01-05  Russell Epstein  <repst...@apple.com>
+
         Cherry-pick r286228. rdar://problem/87125189
 
     [JSC] GetTypedArrayLengthAsInt52 can get Array::Generic ArrayMode

Modified: branches/safari-612-branch/Source/_javascript_Core/jit/JITOperations.cpp (287623 => 287624)


--- branches/safari-612-branch/Source/_javascript_Core/jit/JITOperations.cpp	2022-01-05 18:20:50 UTC (rev 287623)
+++ branches/safari-612-branch/Source/_javascript_Core/jit/JITOperations.cpp	2022-01-05 18:20:53 UTC (rev 287624)
@@ -527,7 +527,7 @@
     JSValue propertyValue = JSValue::decode(encodedProperty);
     ASSERT(propertyValue.isSymbol());
     auto property = propertyValue.toPropertyKey(globalObject);
-    EXCEPTION_ASSERT(!scope.exception());
+    RETURN_IF_EXCEPTION(scope, { });
 
     PropertySlot slot(baseObject, PropertySlot::InternalMethodType::HasProperty);
     bool found = JSObject::getPrivateFieldSlot(baseObject, globalObject, property, slot);
@@ -561,7 +561,7 @@
     JSValue propertyValue = JSValue::decode(encodedProperty);
     ASSERT(propertyValue.isSymbol());
     auto property = propertyValue.toPropertyKey(globalObject);
-    EXCEPTION_ASSERT(!scope.exception());
+    RETURN_IF_EXCEPTION(scope, { });
 
     return JSValue::encode(jsBoolean(asObject(baseValue)->hasPrivateField(globalObject, property)));
 }
@@ -1323,7 +1323,7 @@
     RETURN_IF_EXCEPTION(scope, void());
 
     auto propertyName = subscript.toPropertyKey(globalObject);
-    EXCEPTION_ASSERT(!scope.exception());
+    RETURN_IF_EXCEPTION(scope, void());
 
     // Private fields can only be accessed within class lexical scope
     // and class methods are always in strict mode
@@ -1357,7 +1357,7 @@
     RETURN_IF_EXCEPTION(scope, void());
 
     auto propertyName = subscript.toPropertyKey(globalObject);
-    EXCEPTION_ASSERT(!scope.exception());
+    RETURN_IF_EXCEPTION(scope, void());
 
     scope.release();
 

Modified: branches/safari-612-branch/Source/_javascript_Core/llint/LLIntSlowPaths.cpp (287623 => 287624)


--- branches/safari-612-branch/Source/_javascript_Core/llint/LLIntSlowPaths.cpp	2022-01-05 18:20:50 UTC (rev 287623)
+++ branches/safari-612-branch/Source/_javascript_Core/llint/LLIntSlowPaths.cpp	2022-01-05 18:20:53 UTC (rev 287624)
@@ -1443,7 +1443,7 @@
     auto propertyValue = getOperand(callFrame, bytecode.m_property);
     ASSERT(propertyValue.isSymbol());
     auto property = propertyValue.toPropertyKey(globalObject);
-    EXCEPTION_ASSERT(!throwScope.exception());
+    LLINT_CHECK_EXCEPTION();
 
     LLINT_RETURN(jsBoolean(asObject(baseValue)->hasPrivateField(globalObject, property)));
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to