@@ -2532,14 +2532,16 @@ bool Worker::Lock::isInspectorEnabled() {
25322532 return worker.script ->isolate ->impl ->inspector != kj::none;
25332533}
25342534
2535- void Worker::Lock::logWarning (kj::StringPtr description) {
2535+ void Worker::Lock::logWarning (
2536+ kj::StringPtr description, CaptureInspectorStackTrace captureStackTrace) {
25362537 // const_cast OK because we are a lock on this isolate.
2537- const_cast <Isolate&>(worker.getIsolate ()).logWarning (description, *this );
2538+ const_cast <Isolate&>(worker.getIsolate ()).logWarning (description, *this , captureStackTrace );
25382539}
25392540
2540- void Worker::Lock::logWarningOnce (kj::StringPtr description) {
2541+ void Worker::Lock::logWarningOnce (
2542+ kj::StringPtr description, CaptureInspectorStackTrace captureStackTrace) {
25412543 // const_cast OK because we are a lock on this isolate.
2542- const_cast <Isolate&>(worker.getIsolate ()).logWarningOnce (description, *this );
2544+ const_cast <Isolate&>(worker.getIsolate ()).logWarningOnce (description, *this , captureStackTrace );
25432545}
25442546
25452547void Worker::Lock::logErrorOnce (kj::StringPtr description) {
@@ -3572,10 +3574,11 @@ void Worker::Isolate::disconnectInspector() {
35723574 impl->inspectorClient ->resetChannel ();
35733575}
35743576
3575- void Worker::Isolate::logWarning (kj::StringPtr description, Lock& lock) {
3577+ void Worker::Isolate::logWarning (
3578+ kj::StringPtr description, Lock& lock, CaptureInspectorStackTrace captureStackTrace) {
35763579 if (impl->inspector != kj::none) {
35773580 JSG_WITHIN_CONTEXT_SCOPE (lock, lock.getContext (), [&](jsg::Lock& js) {
3578- logMessage (js, static_cast <uint16_t >(cdp::LogType::WARNING ), description);
3581+ logMessage (js, static_cast <uint16_t >(cdp::LogType::WARNING ), description, captureStackTrace );
35793582 });
35803583 }
35813584
@@ -3608,9 +3611,10 @@ void Worker::Isolate::logWarning(kj::StringPtr description, Lock& lock) {
36083611 }
36093612}
36103613
3611- void Worker::Isolate::logWarningOnce (kj::StringPtr description, Lock& lock) {
3614+ void Worker::Isolate::logWarningOnce (
3615+ kj::StringPtr description, Lock& lock, CaptureInspectorStackTrace captureStackTrace) {
36123616 impl->warningOnceDescriptions .findOrCreate (description, [&] {
3613- logWarning (description, lock);
3617+ logWarning (description, lock, captureStackTrace );
36143618 return kj::str (description);
36153619 });
36163620}
@@ -3622,7 +3626,10 @@ void Worker::Isolate::logErrorOnce(kj::StringPtr description) {
36223626 });
36233627}
36243628
3625- void Worker::Isolate::logMessage (jsg::Lock& js, uint16_t type, kj::StringPtr description) {
3629+ void Worker::Isolate::logMessage (jsg::Lock& js,
3630+ uint16_t type,
3631+ kj::StringPtr description,
3632+ CaptureInspectorStackTrace captureStackTrace) {
36263633 if (impl->inspector != kj::none) {
36273634 // We want to log a warning to the devtools console, as if `console.warn()` were called.
36283635 // However, the only public interface to call the real `console.warn()` is via JavaScript,
@@ -3653,7 +3660,9 @@ void Worker::Isolate::logMessage(jsg::Lock& js, uint16_t type, kj::StringPtr des
36533660 params.initArgs (1 )[0 ].initString ().setValue (description);
36543661 params.setExecutionContextId (v8_inspector::V8ContextInfo::executionContextId (js.v8Context ()));
36553662 params.setTimestamp (impl->inspectorClient ->currentTimeMS ());
3656- stackTraceToCDP (js, params.initStackTrace ());
3663+ if (captureStackTrace) {
3664+ stackTraceToCDP (js, params.initStackTrace ());
3665+ }
36573666
36583667 auto notification = getCdpJsonCodec ().encode (event);
36593668 KJ_IF_SOME (i, currentInspectorSession) {
0 commit comments