Skip to content

Commit 144ef93

Browse files
legendecasaduh95
authored andcommitted
src: add contextify interceptor debug logs
PR-URL: #62460 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
1 parent 318e2c7 commit 144ef93

3 files changed

Lines changed: 47 additions & 0 deletions

File tree

src/debug_utils-inl.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,25 @@ struct ToStringHelper {
6262
static std::string Convert(const std::string& value) { return value; }
6363
static std::string_view Convert(std::string_view value) { return value; }
6464
static std::string Convert(bool value) { return value ? "true" : "false"; }
65+
66+
static std::string Convert(v8::Local<v8::Value> value) {
67+
v8::Isolate* isolate = v8::Isolate::GetCurrent();
68+
if (value->IsString()) {
69+
Utf8Value utf8_value(isolate, value);
70+
return SPrintF("\"%s\"", utf8_value.ToString());
71+
}
72+
v8::MaybeLocal<v8::String> maybe_detail =
73+
value->ToDetailString(isolate->GetCurrentContext());
74+
v8::Local<v8::String> detail;
75+
if (!maybe_detail.ToLocal(&detail)) {
76+
// This will only occur when terminating. No exception is expected
77+
// with `ToDetailString`.
78+
return "<Unable to stringify v8::Value>";
79+
}
80+
Utf8Value utf8_value(isolate, detail);
81+
return utf8_value.ToString();
82+
}
83+
6584
template <unsigned BASE_BITS,
6685
typename T,
6786
typename = std::enable_if_t<std::is_integral_v<T>>>

src/debug_utils.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ void NODE_EXTERN_PRIVATE FWrite(FILE* file, const std::string& str);
4747
V(BOOTSTRAP) \
4848
V(CRYPTO) \
4949
V(COMPILE_CACHE) \
50+
V(CONTEXTIFY) \
5051
V(DIAGNOSTICS) \
5152
V(HUGEPAGES) \
5253
V(INSPECTOR_SERVER) \

src/node_contextify.cc

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
#include "base_object-inl.h"
2525
#include "cppgc/allocation.h"
26+
#include "debug_utils-inl.h"
2627
#include "memory_tracker-inl.h"
2728
#include "module_wrap.h"
2829
#include "node_context_data.h"
@@ -484,6 +485,9 @@ Intercepted ContextifyContext::PropertyQueryCallback(
484485
return Intercepted::kNo;
485486
}
486487

488+
per_process::Debug(
489+
DebugCategory::CONTEXTIFY, "PropertyQuery(%s)\n", property);
490+
487491
Local<Context> context = ctx->context();
488492
Local<Object> sandbox = ctx->sandbox();
489493

@@ -530,6 +534,9 @@ Intercepted ContextifyContext::PropertyGetterCallback(
530534
return Intercepted::kNo;
531535
}
532536

537+
per_process::Debug(
538+
DebugCategory::CONTEXTIFY, "PropertyGetter(name: %s)\n", property);
539+
533540
Local<Context> context = ctx->context();
534541
Local<Object> sandbox = ctx->sandbox();
535542

@@ -567,6 +574,12 @@ Intercepted ContextifyContext::PropertySetterCallback(
567574
return Intercepted::kNo;
568575
}
569576

577+
per_process::Debug(DebugCategory::CONTEXTIFY,
578+
"PropertySetter(name: %s, value: %s), use-strict(%s)\n",
579+
property,
580+
value,
581+
args.ShouldThrowOnError());
582+
570583
Local<Context> context = ctx->context();
571584
PropertyAttribute attributes = PropertyAttribute::None;
572585
bool is_declared_on_global_proxy = ctx->global_proxy()
@@ -655,6 +668,9 @@ Intercepted ContextifyContext::PropertyDescriptorCallback(
655668
return Intercepted::kNo;
656669
}
657670

671+
per_process::Debug(
672+
DebugCategory::CONTEXTIFY, "PropertyDescriptor(name: %s)\n", property);
673+
658674
Local<Context> context = ctx->context();
659675

660676
Local<Object> sandbox = ctx->sandbox();
@@ -681,6 +697,9 @@ Intercepted ContextifyContext::PropertyDefinerCallback(
681697
return Intercepted::kNo;
682698
}
683699

700+
per_process::Debug(
701+
DebugCategory::CONTEXTIFY, "PropertyDefiner(name: %s)\n", property);
702+
684703
Local<Context> context = ctx->context();
685704
Isolate* isolate = Isolate::GetCurrent();
686705

@@ -751,6 +770,9 @@ Intercepted ContextifyContext::PropertyDeleterCallback(
751770
return Intercepted::kNo;
752771
}
753772

773+
per_process::Debug(
774+
DebugCategory::CONTEXTIFY, "PropertyDeleter(name: %s)\n", property);
775+
754776
Maybe<bool> success = ctx->sandbox()->Delete(ctx->context(), property);
755777

756778
if (success.FromMaybe(false)) {
@@ -778,6 +800,8 @@ void ContextifyContext::PropertyEnumeratorCallback(
778800
// Still initializing
779801
if (IsStillInitializing(ctx)) return;
780802

803+
per_process::Debug(DebugCategory::CONTEXTIFY, "PropertyEnumerator()\n");
804+
781805
Local<Array> properties;
782806
// Only get own named properties, exclude indices.
783807
if (!ctx->sandbox()
@@ -809,6 +833,9 @@ void ContextifyContext::IndexedPropertyEnumeratorCallback(
809833
// Still initializing
810834
if (IsStillInitializing(ctx)) return;
811835

836+
per_process::Debug(DebugCategory::CONTEXTIFY,
837+
"IndexedPropertyEnumerator()\n");
838+
812839
Local<Array> properties;
813840

814841
// Only get own index properties.

0 commit comments

Comments
 (0)