Title: [293779] trunk/Source
Revision
293779
Author
mark....@apple.com
Date
2022-05-04 10:44:44 -0700 (Wed, 04 May 2022)

Log Message

Use IterationStatus in more places.
https://bugs.webkit.org/show_bug.cgi?id=239864

Reviewed by Saam Barati.

Source/_javascript_Core:

There's no need for a StackVisitor::Status and a VMInspector::FunctorStatus which
represent the same idea.

* API/JSContextRef.cpp:
(BacktraceFunctor::operator() const):
* bytecode/CodeBlock.cpp:
(JSC::RecursionCheckFunctor::operator() const):
* debugger/DebuggerCallFrame.cpp:
(JSC::LineAndColumnFunctor::operator() const):
* inspector/ScriptCallStackFactory.cpp:
(Inspector::CreateScriptCallStackFunctor::operator() const):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::callerSourceOrigin):
(JSC::CallFrame::globalObjectOfClosestCodeBlock):
* interpreter/CallFrame.h:
* interpreter/Interpreter.cpp:
(JSC::GetStackTraceFunctor::operator() const):
(JSC::Interpreter::getStackTrace):
(JSC::GetCatchHandlerFunctor::operator() const):
(JSC::UnwindFunctor::operator() const):
* interpreter/ShadowChicken.cpp:
(JSC::ShadowChicken::update):
* interpreter/StackVisitor.h:
(JSC::StackVisitor::visit):
(JSC::CallerFunctor::operator() const):
* jsc.cpp:
(FunctionJSCStackFunctor::operator() const):
(startTimeoutTimer):
* runtime/Error.cpp:
(JSC::FindFirstCallerFrameWithCodeblockFunctor::operator() const):
* runtime/FunctionPrototype.cpp:
(JSC::RetrieveArgumentsFunctor::operator() const):
(JSC::RetrieveCallerFunctionFunctor::operator() const):
* runtime/JSGlobalObject.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/NullSetterFunction.cpp:
(JSC::GetCallerStrictnessFunctor::operator() const):
* tools/HeapVerifier.cpp:
(JSC::HeapVerifier::checkIfRecorded):
* tools/JSDollarVM.cpp:
(JSC::CallerFrameJITTypeFunctor::operator() const):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* tools/VMInspector.cpp:
(JSC::VMInspector::forEachVM):
(JSC::VMInspector::isValidExecutableMemory):
(JSC::VMInspector::codeBlockForMachinePC):
(JSC::VMInspector::codeBlockForFrame):
(JSC::DumpFrameFunctor::operator() const):
(JSC::VMInspector::dumpRegisters):
* tools/VMInspector.h:
(JSC::VMInspector::WTF_REQUIRES_LOCK):

Source/WebCore:

* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::callerGlobalObject):
* testing/Internals.cpp:
(WebCore::GetCallerCodeBlockFunctor::operator() const):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/API/JSContextRef.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/API/JSContextRef.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/API/JSContextRef.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2019 Apple Inc. All rights reserved.
+ * Copyright (C) 2006-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -290,7 +290,7 @@
     {
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         if (m_remainingCapacityForFrameCapture) {
             // If callee is unknown, but we've not added any frame yet, we should
@@ -298,7 +298,7 @@
             if (visitor->callee().isCell()) {
                 JSCell* callee = visitor->callee().asCell();
                 if (!callee && visitor->index())
-                    return StackVisitor::Done;
+                    return IterationStatus::Done;
             }
 
             StringBuilder& builder = m_builder;
@@ -313,12 +313,12 @@
             }
 
             if (!visitor->callee().rawPtr())
-                return StackVisitor::Done;
+                return IterationStatus::Done;
 
             m_remainingCapacityForFrameCapture--;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
 private:

Modified: trunk/Source/_javascript_Core/ChangeLog (293778 => 293779)


--- trunk/Source/_javascript_Core/ChangeLog	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/ChangeLog	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,3 +1,62 @@
+2022-05-04  Mark Lam  <mark....@apple.com>
+
+        Use IterationStatus in more places.
+        https://bugs.webkit.org/show_bug.cgi?id=239864
+
+        Reviewed by Saam Barati.
+
+        There's no need for a StackVisitor::Status and a VMInspector::FunctorStatus which
+        represent the same idea.
+
+        * API/JSContextRef.cpp:
+        (BacktraceFunctor::operator() const):
+        * bytecode/CodeBlock.cpp:
+        (JSC::RecursionCheckFunctor::operator() const):
+        * debugger/DebuggerCallFrame.cpp:
+        (JSC::LineAndColumnFunctor::operator() const):
+        * inspector/ScriptCallStackFactory.cpp:
+        (Inspector::CreateScriptCallStackFunctor::operator() const):
+        * interpreter/CallFrame.cpp:
+        (JSC::CallFrame::callerSourceOrigin):
+        (JSC::CallFrame::globalObjectOfClosestCodeBlock):
+        * interpreter/CallFrame.h:
+        * interpreter/Interpreter.cpp:
+        (JSC::GetStackTraceFunctor::operator() const):
+        (JSC::Interpreter::getStackTrace):
+        (JSC::GetCatchHandlerFunctor::operator() const):
+        (JSC::UnwindFunctor::operator() const):
+        * interpreter/ShadowChicken.cpp:
+        (JSC::ShadowChicken::update):
+        * interpreter/StackVisitor.h:
+        (JSC::StackVisitor::visit):
+        (JSC::CallerFunctor::operator() const):
+        * jsc.cpp:
+        (FunctionJSCStackFunctor::operator() const):
+        (startTimeoutTimer):
+        * runtime/Error.cpp:
+        (JSC::FindFirstCallerFrameWithCodeblockFunctor::operator() const):
+        * runtime/FunctionPrototype.cpp:
+        (JSC::RetrieveArgumentsFunctor::operator() const):
+        (JSC::RetrieveCallerFunctionFunctor::operator() const):
+        * runtime/JSGlobalObject.cpp:
+        (JSC::JSC_DEFINE_HOST_FUNCTION):
+        * runtime/NullSetterFunction.cpp:
+        (JSC::GetCallerStrictnessFunctor::operator() const):
+        * tools/HeapVerifier.cpp:
+        (JSC::HeapVerifier::checkIfRecorded):
+        * tools/JSDollarVM.cpp:
+        (JSC::CallerFrameJITTypeFunctor::operator() const):
+        (JSC::JSC_DEFINE_HOST_FUNCTION):
+        * tools/VMInspector.cpp:
+        (JSC::VMInspector::forEachVM):
+        (JSC::VMInspector::isValidExecutableMemory):
+        (JSC::VMInspector::codeBlockForMachinePC):
+        (JSC::VMInspector::codeBlockForFrame):
+        (JSC::DumpFrameFunctor::operator() const):
+        (JSC::VMInspector::dumpRegisters):
+        * tools/VMInspector.h:
+        (JSC::VMInspector::WTF_REQUIRES_LOCK):
+
 2022-04-30  Philippe Normand  <ph...@igalia.com>
 
         Web Inspector: Update jsmin to 3.0.1

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -2339,7 +2339,7 @@
         , m_didRecurse(false)
     { }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         CallFrame* currentCallFrame = visitor->callFrame();
 
@@ -2349,14 +2349,14 @@
         if (m_foundStartCallFrame) {
             if (visitor->callFrame()->codeBlock() == m_codeBlock) {
                 m_didRecurse = true;
-                return StackVisitor::Done;
+                return IterationStatus::Done;
             }
 
             if (!m_depthToCheck--)
-                return StackVisitor::Done;
+                return IterationStatus::Done;
         }
 
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     }
 
     bool didRecurse() const { return m_didRecurse; }

Modified: trunk/Source/_javascript_Core/debugger/DebuggerCallFrame.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/debugger/DebuggerCallFrame.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/debugger/DebuggerCallFrame.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2013-2014, 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2008-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -44,10 +44,10 @@
 
 class LineAndColumnFunctor {
 public:
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         visitor->computeLineAndColumn(m_line, m_column);
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
     unsigned line() const { return m_line; }

Modified: trunk/Source/_javascript_Core/inspector/ScriptCallStackFactory.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/inspector/ScriptCallStackFactory.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/inspector/ScriptCallStackFactory.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014-2019 Apple Inc. All rights reserved.
+ * Copyright (C) 2014-2022 Apple Inc. All rights reserved.
  * Copyright (c) 2010 Google Inc. All rights reserved.
  * Copyright (C) 2012 Research In Motion Limited. All rights reserved.
  *
@@ -51,11 +51,11 @@
     {
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         if (m_needToSkipAFrame) {
             m_needToSkipAFrame = false;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
 
         if (m_remainingCapacityForFrameCapture) {
@@ -65,10 +65,10 @@
             m_frames.append(ScriptCallFrame(visitor->functionName(), visitor->sourceURL(), visitor->sourceID(), line, column));
 
             m_remainingCapacityForFrameCapture--;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
 
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
 private:

Modified: trunk/Source/_javascript_Core/interpreter/CallFrame.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/interpreter/CallFrame.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/interpreter/CallFrame.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -200,7 +200,7 @@
     bool haveSkippedFirstFrame = false;
     StackVisitor::visit(this, vm, [&](StackVisitor& visitor) {
         if (!std::exchange(haveSkippedFirstFrame, true))
-            return StackVisitor::Status::Continue;
+            return IterationStatus::Continue;
 
         switch (visitor->codeType()) {
         case StackVisitor::Frame::CodeType::Function:
@@ -213,7 +213,7 @@
             // At that time, the generated eval code should have the source origin to the original caller of the forEach function
             // instead of the source origin of the forEach function.
             if (static_cast<FunctionExecutable*>(visitor->codeBlock()->ownerExecutable())->isBuiltinFunction())
-                return StackVisitor::Status::Continue;
+                return IterationStatus::Continue;
             FALLTHROUGH;
 
         case StackVisitor::Frame::CodeType::Eval:
@@ -220,18 +220,18 @@
         case StackVisitor::Frame::CodeType::Module:
         case StackVisitor::Frame::CodeType::Global:
             sourceOrigin = visitor->codeBlock()->ownerExecutable()->sourceOrigin();
-            return StackVisitor::Status::Done;
+            return IterationStatus::Done;
 
         case StackVisitor::Frame::CodeType::Native:
-            return StackVisitor::Status::Continue;
+            return IterationStatus::Continue;
 
         case StackVisitor::Frame::CodeType::Wasm:
             // FIXME: Should return the source origin for WASM.
-            return StackVisitor::Status::Done;
+            return IterationStatus::Done;
         }
 
         RELEASE_ASSERT_NOT_REACHED();
-        return StackVisitor::Status::Done;
+        return IterationStatus::Done;
     });
     return sourceOrigin;
 }
@@ -244,16 +244,16 @@
     StackVisitor::visit(callFrame, vm, [&](StackVisitor& visitor) {
         if (visitor->isWasmFrame()) {
             globalObject = visitor->callFrame()->lexicalGlobalObject(vm);
-            return StackVisitor::Status::Done;
+            return IterationStatus::Done;
         }
         if (auto* codeBlock = visitor->codeBlock()) {
             if (codeBlock->codeType() == CodeType::FunctionCode && static_cast<FunctionExecutable*>(codeBlock->ownerExecutable())->isBuiltinFunction())
-                return StackVisitor::Status::Continue;
+                return IterationStatus::Continue;
             globalObject = codeBlock->globalObject();
-            return StackVisitor::Status::Done;
+            return IterationStatus::Done;
         }
         ASSERT(visitor->codeType() == StackVisitor::Frame::CodeType::Native);
-        return StackVisitor::Status::Continue;
+        return IterationStatus::Continue;
     });
     if (globalObject)
         return globalObject;

Modified: trunk/Source/_javascript_Core/interpreter/CallFrame.h (293778 => 293779)


--- trunk/Source/_javascript_Core/interpreter/CallFrame.h	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/interpreter/CallFrame.h	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,7 +1,7 @@
 /*
  *  Copyright (C) 1999-2001 Harri Porten (por...@kde.org)
  *  Copyright (C) 2001 Peter Kelly (p...@post.com)
- *  Copyright (C) 2003-2021 Apple Inc. All rights reserved.
+ *  Copyright (C) 2003-2022 Apple Inc. All rights reserved.
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Library General Public
@@ -318,7 +318,7 @@
         String friendlyFunctionName();
 
         // CallFrame::iterate() expects a Functor that implements the following method:
-        //     StackVisitor::Status operator()(StackVisitor&) const;
+        //     IterationStatus operator()(StackVisitor&) const;
         // FIXME: This method is improper. We rely on the fact that we can call it with a null
         // receiver. We should always be using StackVisitor directly.
         // It's only valid to call this from a non-wasm top frame.

Modified: trunk/Source/_javascript_Core/interpreter/Interpreter.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/interpreter/Interpreter.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/interpreter/Interpreter.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -386,11 +386,11 @@
         m_results.reserveInitialCapacity(capacity);
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         if (m_framesToSkip > 0) {
             m_framesToSkip--;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
 
         if (m_remainingCapacityForFrameCapture) {
@@ -405,9 +405,9 @@
             }
     
             m_remainingCapacityForFrameCapture--;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
 private:
@@ -428,10 +428,10 @@
 
     size_t framesCount = 0;
     size_t maxFramesCountNeeded = maxStackSize + framesToSkip;
-    StackVisitor::visit(callFrame, vm, [&] (StackVisitor&) -> StackVisitor::Status {
+    StackVisitor::visit(callFrame, vm, [&] (StackVisitor&) -> IterationStatus {
         if (++framesCount < maxFramesCountNeeded)
-            return StackVisitor::Continue;
-        return StackVisitor::Done;
+            return IterationStatus::Continue;
+        return IterationStatus::Done;
     });
     if (framesCount <= framesToSkip)
         return;
@@ -482,19 +482,19 @@
 
     HandlerInfo* handler() { return m_handler; }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         visitor.unwindToMachineCodeBlockFrame();
 
         CodeBlock* codeBlock = visitor->codeBlock();
         if (!codeBlock)
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         m_handler = findExceptionHandler(visitor, codeBlock, RequiredHandler::CatchHandler);
         if (m_handler)
-            return StackVisitor::Done;
+            return IterationStatus::Done;
 
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     }
 
 private:
@@ -561,7 +561,7 @@
 #endif
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         visitor.unwindToMachineCodeBlockFrame();
         m_callFrame = visitor->callFrame();
@@ -572,7 +572,7 @@
             if (!m_isTermination) {
                 m_handler = { findExceptionHandler(visitor, m_codeBlock, RequiredHandler::AnyHandler), m_codeBlock };
                 if (m_handler.m_valid)
-                    return StackVisitor::Done;
+                    return IterationStatus::Done;
             }
         }
 
@@ -590,7 +590,7 @@
                 unsigned exceptionHandlerIndex = m_callFrame->callSiteIndex().bits();
                 m_handler = { wasmCallee->handlerForIndex(jsInstance->instance(), exceptionHandlerIndex, m_wasmTag), wasmCallee };
                 if (m_handler.m_valid)
-                    return StackVisitor::Done;
+                    return IterationStatus::Done;
             }
         }
 #endif
@@ -607,9 +607,9 @@
 
         bool shouldStopUnwinding = visitor->callerIsEntryFrame();
         if (shouldStopUnwinding)
-            return StackVisitor::Done;
+            return IterationStatus::Done;
 
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     }
 
 private:

Modified: trunk/Source/_javascript_Core/interpreter/ShadowChicken.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/interpreter/ShadowChicken.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/interpreter/ShadowChicken.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016-2021 Apple Inc. All rights reserved.
+ * Copyright (C) 2016-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -173,13 +173,13 @@
     if (!m_stack.isEmpty()) {
         Vector<Frame> stackRightNow;
         StackVisitor::visit(
-            callFrame, vm, [&] (StackVisitor& visitor) -> StackVisitor::Status {
+            callFrame, vm, [&] (StackVisitor& visitor) -> IterationStatus {
                 if (visitor->isInlinedFrame())
-                    return StackVisitor::Continue;
+                    return IterationStatus::Continue;
                 if (visitor->isWasmFrame()) {
                     // FIXME: Make shadow chicken work with Wasm.
                     // https://bugs.webkit.org/show_bug.cgi?id=165441
-                    return StackVisitor::Continue;
+                    return IterationStatus::Continue;
                 }
 
                 bool isTailDeleted = false;
@@ -186,7 +186,7 @@
                 // FIXME: Make shadow chicken work with Wasm.
                 // https://bugs.webkit.org/show_bug.cgi?id=165441
                 stackRightNow.append(Frame(jsCast<JSObject*>(visitor->callee().asCell()), visitor->callFrame(), isTailDeleted));
-                return StackVisitor::Continue;
+                return IterationStatus::Continue;
             });
         stackRightNow.reverse();
         
@@ -294,16 +294,16 @@
     
     Vector<Frame> toPush;
     StackVisitor::visit(
-        callFrame, vm, [&] (StackVisitor& visitor) -> StackVisitor::Status {
+        callFrame, vm, [&] (StackVisitor& visitor) -> IterationStatus {
             if (visitor->isInlinedFrame()) {
                 // FIXME: Handle inlining.
                 // https://bugs.webkit.org/show_bug.cgi?id=155686
-                return StackVisitor::Continue;
+                return IterationStatus::Continue;
             }
 
             if (visitor->isWasmFrame()) {
                 // FIXME: Make shadow chicken work with Wasm.
-                return StackVisitor::Continue;
+                return IterationStatus::Continue;
             }
 
             CallFrame* callFrame = visitor->callFrame();
@@ -322,7 +322,7 @@
                 // that do not run into the current call frame but are left in the shadow stack.
                 // Those tail deleted frames should be validated somehow.
 
-                return StackVisitor::Done;
+                return IterationStatus::Done;
             }
 
             bool foundFrame = advanceIndexInLogTo(callFrame, callFrame->jsCallee(), callFrame->callerFrame());
@@ -392,7 +392,7 @@
                 }
             }
 
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         });
 
     if (ShadowChickenInternal::verbose)

Modified: trunk/Source/_javascript_Core/interpreter/StackVisitor.h (293778 => 293779)


--- trunk/Source/_javascript_Core/interpreter/StackVisitor.h	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/interpreter/StackVisitor.h	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013-2018 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -31,6 +31,7 @@
 #include "WasmIndexOrName.h"
 #include <wtf/Function.h>
 #include <wtf/Indenter.h>
+#include <wtf/IterationStatus.h>
 #include <wtf/text/WTFString.h>
 
 namespace JSC {
@@ -150,8 +151,8 @@
         if (action == TerminateIfTopEntryFrameIsEmpty && visitor.topEntryFrameIsEmpty())
             return;
         while (visitor->callFrame()) {
-            Status status = functor(visitor);
-            if (status != Continue)
+            IterationStatus status = functor(visitor);
+            if (status != IterationStatus::Continue)
                 break;
             visitor.gotoNextFrame();
         }
@@ -188,15 +189,15 @@
 
     CallFrame* callerFrame() const { return m_callerFrame; }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         if (!m_hasSkippedFirstFrame) {
             m_hasSkippedFirstFrame = true;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
 
         m_callerFrame = visitor->callFrame();
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
     
 private:

Modified: trunk/Source/_javascript_Core/jsc.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/jsc.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/jsc.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1376,10 +1376,10 @@
     {
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         m_trace.append(makeString("    ", visitor->index(), "   ", visitor->toString(), '\n'));
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     }
 
 private:
@@ -2936,11 +2936,11 @@
 {
     Thread::create("jsc Timeout Thread", [=] () {
         sleep(duration);
-        VMInspector::forEachVM([&] (VM& vm) -> VMInspector::FunctorStatus {
+        VMInspector::forEachVM([&] (VM& vm) -> IterationStatus {
             if (&vm != s_vm)
-                return VMInspector::FunctorStatus::Continue;
+                return IterationStatus::Continue;
             vm.notifyNeedShellTimeoutCheck();
-            return VMInspector::FunctorStatus::Done;
+            return IterationStatus::Done;
         });
 
         if (const char* timeoutString = getenv("JSCTEST_hardTimeout")) {

Modified: trunk/Source/_javascript_Core/runtime/Error.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/runtime/Error.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/runtime/Error.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,7 +1,7 @@
 /*
  *  Copyright (C) 1999-2001 Harri Porten (por...@kde.org)
  *  Copyright (C) 2001 Peter Kelly (p...@post.com)
- *  Copyright (C) 2003-2019 Apple Inc. All rights reserved.
+ *  Copyright (C) 2003-2022 Apple Inc. All rights reserved.
  *  Copyright (C) 2007 Eric Seidel (e...@webkit.org)
  *
  *  This library is free software; you can redistribute it and/or
@@ -127,7 +127,7 @@
         , m_index(0)
     { }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         if (!m_foundStartCallFrame && (visitor->callFrame() == m_startCallFrame))
             m_foundStartCallFrame = true;
@@ -135,12 +135,12 @@
         if (m_foundStartCallFrame) {
             if (!visitor->isWasmFrame() && visitor->callFrame()->codeBlock()) {
                 m_foundCallFrame = visitor->callFrame();
-                return StackVisitor::Done;
+                return IterationStatus::Done;
             }
             m_index++;
         }
 
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     }
 
     CallFrame* foundCallFrame() const { return m_foundCallFrame; }

Modified: trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,6 +1,6 @@
 /*
  *  Copyright (C) 1999-2001 Harri Porten (por...@kde.org)
- *  Copyright (C) 2003-2020 Apple Inc. All rights reserved.
+ *  Copyright (C) 2003-2022 Apple Inc. All rights reserved.
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -122,17 +122,17 @@
 
     JSValue result() const { return m_result; }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         if (!visitor->callee().isCell())
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         JSCell* callee = visitor->callee().asCell();
         if (callee != m_targetCallee)
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         m_result = JSValue(visitor->createArguments(m_vm));
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
 private:
@@ -174,28 +174,28 @@
 
     JSValue result() const { return m_result; }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         if (!visitor->callee().isCell())
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         JSCell* callee = visitor->callee().asCell();
 
         if (callee && (callee->inherits<JSBoundFunction>() || callee->inherits<JSRemoteFunction>() || callee->type() == ProxyObjectType))
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         if (!m_hasFoundFrame && callee != m_targetCallee)
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         m_hasFoundFrame = true;
         if (!m_hasSkippedToCallerFrame) {
             m_hasSkippedToCallerFrame = true;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
 
         if (callee)
             m_result = callee;
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
 private:

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2021 Apple Inc. All rights reserved.
+ * Copyright (C) 2007-2022 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Cameron Zwarich (cwzwar...@uwaterloo.ca)
  *
  * Redistribution and use in source and binary forms, with or without
@@ -374,7 +374,7 @@
     callFrame->iterate(globalObject->vm(), [&] (StackVisitor& visitor) {
         if (!iteratedOnce) {
             iteratedOnce = true;
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
 
         RELEASE_ASSERT(visitor->hasLineAndColumnInfo());
@@ -381,7 +381,7 @@
         unsigned column;
         visitor->computeLineAndColumn(line, column);
         codeBlock = visitor->codeBlock();
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     });
     RELEASE_ASSERT(!!codeBlock);
     RELEASE_ASSERT_WITH_MESSAGE(false, "JS assertion failed at line %u in:\n%s\n", line, codeBlock->sourceCodeForTools().data());

Modified: trunk/Source/_javascript_Core/runtime/NullSetterFunction.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/runtime/NullSetterFunction.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/runtime/NullSetterFunction.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2015-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -44,17 +44,17 @@
     {
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         ++m_iterations;
         if (m_iterations < 2)
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         CodeBlock* codeBlock = visitor->codeBlock();
         // This does not take into account that we might have an strict opcode in a non-strict context, but that's
         // ok since we assert below that this function should never be called from any kind strict context.
         m_callerIsStrict = codeBlock && codeBlock->ownerExecutable()->isInStrictContext();
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
     bool callerIsStrict() const { return m_callerIsStrict; }

Modified: trunk/Source/_javascript_Core/tools/HeapVerifier.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/tools/HeapVerifier.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/tools/HeapVerifier.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014-2019 Apple Inc. All rights reserved.
+ * Copyright (C) 2014-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -444,12 +444,12 @@
     Locker locker { AdoptLock, inspector.getLock() };
     inspector.iterate([&] (VM& vm) {
         if (!vm.heap.m_verifier)
-            return VMInspector::FunctorStatus::Continue;
+            return IterationStatus::Continue;
         
         auto* verifier = vm.heap.m_verifier.get();
         dataLog("Search for cell ", RawPointer(candidateHeapCell), " in VM ", RawPointer(&vm), ":\n");
         verifier->checkIfRecorded(candidateHeapCell);
-        return VMInspector::FunctorStatus::Continue;
+        return IterationStatus::Continue;
     });
 }
 

Modified: trunk/Source/_javascript_Core/tools/JSDollarVM.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/tools/JSDollarVM.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/tools/JSDollarVM.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2021 Apple Inc. All rights reserved.
+ * Copyright (C) 2015-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -171,7 +171,7 @@
             DollarVMAssertScope assertScope;
 
             if (frameIndex++ != requestedFrameIndex)
-                return StackVisitor::Continue;
+                return IterationStatus::Continue;
 
             addProperty(vm, "name"_s, jsString(vm, visitor->functionName()));
 
@@ -186,7 +186,7 @@
             }
             isValid = true;
 
-            return StackVisitor::Done;
+            return IterationStatus::Done;
         });
 
         addProperty(vm, "valid"_s, jsBoolean(isValid));
@@ -2314,7 +2314,7 @@
         DollarVMAssertScope assertScope;
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         unsigned index = m_currentFrame++;
         // First frame (index 0) is `llintTrue` etc. function itself.
@@ -2321,9 +2321,9 @@
         if (index == 1) {
             if (visitor->codeBlock())
                 m_jitType = visitor->codeBlock()->jitType();
-            return StackVisitor::Done;
+            return IterationStatus::Done;
         }
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     }
     
     JITType jitType() { return m_jitType; }
@@ -2618,9 +2618,9 @@
     callFrame->iterate(vm, [&] (StackVisitor& visitor) {
         DollarVMAssertScope assertScope;
         if (frameIndex++ != requestedFrameIndex)
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         VMInspector::dumpRegisters(visitor->callFrame());
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     });
 
     return encodedJSUndefined();
@@ -3251,15 +3251,15 @@
 
     JSArray* result = constructEmptyArray(globalObject, nullptr);
     RETURN_IF_EXCEPTION(scope, { });
-    StackVisitor::visit(callFrame, vm, [&] (StackVisitor& visitor) -> StackVisitor::Status {
+    StackVisitor::visit(callFrame, vm, [&] (StackVisitor& visitor) -> IterationStatus {
         DollarVMAssertScope assertScope;
         if (visitor->isInlinedFrame())
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         if (visitor->isWasmFrame())
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         result->push(globalObject, jsCast<JSObject*>(visitor->callee().asCell()));
         scope.releaseAssertNoException(); // This function is only called from tests.
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     });
     RETURN_IF_EXCEPTION(scope, { });
     return JSValue::encode(result);

Modified: trunk/Source/_javascript_Core/tools/VMInspector.cpp (293778 => 293779)


--- trunk/Source/_javascript_Core/tools/VMInspector.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/tools/VMInspector.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017-2020 Apple Inc. All rights reserved.
+ * Copyright (C) 2017-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -75,7 +75,7 @@
 }
 #endif // ENABLE(JIT)
 
-void VMInspector::forEachVM(Function<FunctorStatus(VM&)>&& func)
+void VMInspector::forEachVM(Function<IterationStatus(VM&)>&& func)
 {
     VMInspector& inspector = instance();
     Locker lock { inspector.getLock() };
@@ -87,7 +87,7 @@
 #if ENABLE(JIT)
     bool found = false;
     bool hasTimeout = false;
-    iterate([&] (VM&) -> FunctorStatus {
+    iterate([&] (VM&) -> IterationStatus {
         auto& allocator = ExecutableAllocator::singleton();
         auto& lock = allocator.getLock();
 
@@ -94,15 +94,15 @@
         bool isSafeToLock = ensureIsSafeToLock(lock);
         if (!isSafeToLock) {
             hasTimeout = true;
-            return FunctorStatus::Continue; // Skip this VM.
+            return IterationStatus::Continue; // Skip this VM.
         }
 
         Locker executableAllocatorLocker { lock };
         if (allocator.isValidExecutableMemory(executableAllocatorLocker, machinePC)) {
             found = true;
-            return FunctorStatus::Done;
+            return IterationStatus::Done;
         }
-        return FunctorStatus::Continue;
+        return IterationStatus::Continue;
     });
 
     if (!found && hasTimeout)
@@ -121,7 +121,7 @@
     bool hasTimeout = false;
     iterate([&] (VM& vm) {
         if (!vm.currentThreadIsHoldingAPILock())
-            return FunctorStatus::Continue;
+            return IterationStatus::Continue;
 
         // It is safe to call Heap::forEachCodeBlockIgnoringJITPlans here because:
         // 1. CodeBlocks are added to the CodeBlockSet from the main thread before
@@ -138,7 +138,7 @@
         bool isSafeToLock = ensureIsSafeToLock(codeBlockSetLock);
         if (!isSafeToLock) {
             hasTimeout = true;
-            return FunctorStatus::Continue; // Skip this VM.
+            return IterationStatus::Continue; // Skip this VM.
         }
 
         Locker locker { codeBlockSetLock };
@@ -160,8 +160,8 @@
             }
         });
         if (codeBlock)
-            return FunctorStatus::Done;
-        return FunctorStatus::Continue;
+            return IterationStatus::Done;
+        return IterationStatus::Continue;
     });
 
     if (!codeBlock && hasTimeout)
@@ -280,14 +280,14 @@
         {
         }
 
-        StackVisitor::Status operator()(StackVisitor& visitor) const
+        IterationStatus operator()(StackVisitor& visitor) const
         {
             auto currentFrame = nextFrame++;
             if (currentFrame == targetFrame) {
                 codeBlock = visitor->codeBlock();
-                return StackVisitor::Done;
+                return IterationStatus::Done;
             }
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         }
 
         unsigned targetFrame;
@@ -313,7 +313,7 @@
     {
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         m_currentFrame++;
         if (m_currentFrame > m_framesToSkip) {
@@ -322,8 +322,8 @@
             });
         }
         if (m_action == DumpOne && m_currentFrame > m_framesToSkip)
-            return StackVisitor::Done;
-        return StackVisitor::Continue;
+            return IterationStatus::Done;
+        return IterationStatus::Continue;
     }
 
 private:
@@ -381,9 +381,9 @@
             unsigned unusedColumn = 0;
             visitor->computeLineAndColumn(line, unusedColumn);
             dataLogF("[ReturnVPC]                | %10p | %d (line %d)\n", it, visitor->bytecodeIndex().offset(), line);
-            return StackVisitor::Done;
+            return IterationStatus::Done;
         }
-        return StackVisitor::Continue;
+        return IterationStatus::Continue;
     });
 
     --it;
@@ -425,9 +425,9 @@
     if (topCallFrame) {
         topCallFrame->iterate(vm, [&] (StackVisitor& visitor) {
             if (callFrame == visitor->callFrame())
-                return StackVisitor::Done;
+                return IterationStatus::Done;
             nextCallFrame = visitor->callFrame();
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
         });
     }
 

Modified: trunk/Source/_javascript_Core/tools/VMInspector.h (293778 => 293779)


--- trunk/Source/_javascript_Core/tools/VMInspector.h	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/_javascript_Core/tools/VMInspector.h	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017-2020 Apple Inc. All rights reserved.
+ * Copyright (C) 2017-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,6 +29,7 @@
 #include "VM.h"
 #include <wtf/DoublyLinkedList.h>
 #include <wtf/Expected.h>
+#include <wtf/IterationStatus.h>
 #include <wtf/Lock.h>
 
 namespace JSC {
@@ -50,21 +51,16 @@
 
     Lock& getLock() WTF_RETURNS_LOCK(m_lock) { return m_lock; }
 
-    enum class FunctorStatus {
-        Continue,
-        Done
-    };
-
     template <typename Functor> void iterate(const Functor& functor) WTF_REQUIRES_LOCK(m_lock)
     {
         for (VM* vm = m_vmList.head(); vm; vm = vm->next()) {
-            FunctorStatus status = functor(*vm);
-            if (status == FunctorStatus::Done)
+            IterationStatus status = functor(*vm);
+            if (status == IterationStatus::Done)
                 return;
         }
     }
 
-    JS_EXPORT_PRIVATE static void forEachVM(Function<FunctorStatus(VM&)>&&);
+    JS_EXPORT_PRIVATE static void forEachVM(Function<IterationStatus(VM&)>&&);
 
     Expected<bool, Error> isValidExecutableMemory(void*) WTF_REQUIRES_LOCK(m_lock);
     Expected<CodeBlock*, Error> codeBlockForMachinePC(void*) WTF_REQUIRES_LOCK(m_lock);

Modified: trunk/Source/WebCore/ChangeLog (293778 => 293779)


--- trunk/Source/WebCore/ChangeLog	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/WebCore/ChangeLog	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,3 +1,15 @@
+2022-05-04  Mark Lam  <mark....@apple.com>
+
+        Use IterationStatus in more places.
+        https://bugs.webkit.org/show_bug.cgi?id=239864
+
+        Reviewed by Saam Barati.
+
+        * bindings/js/JSDOMGlobalObject.cpp:
+        (WebCore::callerGlobalObject):
+        * testing/Internals.cpp:
+        (WebCore::GetCallerCodeBlockFunctor::operator() const):
+
 2022-05-04  Ziran Sun  <z...@igalia.com>
 
         [InputElement] Selection after type change needs to follow HTML specification

Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp (293778 => 293779)


--- trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2021 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008-2022 Apple Inc. All Rights Reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -651,12 +651,12 @@
                 : m_skipFirstFrame(skipFirstFrame)
             { }
 
-            StackVisitor::Status operator()(StackVisitor& visitor) const
+            IterationStatus operator()(StackVisitor& visitor) const
             {
                 if (m_skipFirstFrame) {
                     if (!m_hasSkippedFirstFrame) {
                         m_hasSkippedFirstFrame = true;
-                        return StackVisitor::Continue;
+                        return IterationStatus::Continue;
                     }
                 }
 
@@ -670,7 +670,7 @@
                     if (visitor->callee().isCell() && visitor->callee().asCell()->isObject())
                         m_globalObject = jsCast<JSObject*>(visitor->callee().asCell())->globalObject();
                 }
-                return StackVisitor::Done;
+                return IterationStatus::Done;
             }
 
             JSC::JSGlobalObject* globalObject() const { return m_globalObject; }

Modified: trunk/Source/WebCore/testing/Internals.cpp (293778 => 293779)


--- trunk/Source/WebCore/testing/Internals.cpp	2022-05-04 17:21:04 UTC (rev 293778)
+++ trunk/Source/WebCore/testing/Internals.cpp	2022-05-04 17:44:44 UTC (rev 293779)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2012 Google Inc. All rights reserved.
- * Copyright (C) 2013-2021 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -2473,14 +2473,14 @@
     {
     }
 
-    StackVisitor::Status operator()(StackVisitor& visitor) const
+    IterationStatus operator()(StackVisitor& visitor) const
     {
         ++m_iterations;
         if (m_iterations < 2)
-            return StackVisitor::Continue;
+            return IterationStatus::Continue;
 
         m_codeBlock = visitor->codeBlock();
-        return StackVisitor::Done;
+        return IterationStatus::Done;
     }
 
     CodeBlock* codeBlock() const { return m_codeBlock; }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to