Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 144ef93

Browse filesBrowse 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
Copy full SHA for 144ef93

3 files changed

+47Lines changed: 47 additions & 0 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/debug_utils-inl.h‎

Copy file name to clipboardExpand all lines: src/debug_utils-inl.h
+19Lines 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>>>
Collapse file

‎src/debug_utils.h‎

Copy file name to clipboardExpand all lines: src/debug_utils.h
+1Lines 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) \
Collapse file

‎src/node_contextify.cc‎

Copy file name to clipboardExpand all lines: src/node_contextify.cc
+27Lines 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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.