Skip to content

Commit 799ca39

Browse files
bartlomiejuclaude
andcommitted
refactor: use bindgen-generated v8::HeapCodeStatistics instead of manual mirror
Use the real V8 HeapCodeStatistics type via bindgen, matching the pattern used by HeapStatistics and HeapSpaceStatistics. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 6c587af commit 799ca39

File tree

3 files changed

+15
-33
lines changed

3 files changed

+15
-33
lines changed

src/binding.cc

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -349,24 +349,9 @@ bool v8__Isolate__GetHeapSpaceStatistics(
349349
return isolate->GetHeapSpaceStatistics(space_statistics, index);
350350
}
351351

352-
struct v8__HeapCodeStatistics {
353-
size_t code_and_metadata_size_;
354-
size_t bytecode_and_metadata_size_;
355-
size_t external_script_source_size_;
356-
size_t cpu_profiler_metadata_size_;
357-
};
358-
359-
bool v8__Isolate__GetHeapCodeAndMetadataStatistics(v8::Isolate* isolate,
360-
v8__HeapCodeStatistics* s) {
361-
v8::HeapCodeStatistics stats;
362-
bool ok = isolate->GetHeapCodeAndMetadataStatistics(&stats);
363-
if (ok) {
364-
s->code_and_metadata_size_ = stats.code_and_metadata_size();
365-
s->bytecode_and_metadata_size_ = stats.bytecode_and_metadata_size();
366-
s->external_script_source_size_ = stats.external_script_source_size();
367-
s->cpu_profiler_metadata_size_ = stats.cpu_profiler_metadata_size();
368-
}
369-
return ok;
352+
bool v8__Isolate__GetHeapCodeAndMetadataStatistics(
353+
v8::Isolate* isolate, v8::HeapCodeStatistics* s) {
354+
return isolate->GetHeapCodeAndMetadataStatistics(s);
370355
}
371356

372357
void v8__Isolate__RemoveNearHeapLimitCallback(

src/binding.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ using v8__String__WriteFlags = v8::String::WriteFlags;
4242
using v8__ModuleImportPhase = v8::ModuleImportPhase;
4343
using v8__HeapStatistics = v8::HeapStatistics;
4444
using v8__HeapSpaceStatistics = v8::HeapSpaceStatistics;
45+
using v8__HeapCodeStatistics = v8::HeapCodeStatistics;
4546
using v8__GCType = v8::GCType;
4647
using v8__GCCallbackFlags = v8::GCCallbackFlags;
4748
using v8__Intercepted = v8::Intercepted;

src/isolate.rs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::StartupData;
1818
use crate::String;
1919
use crate::V8::get_current_platform;
2020
use crate::Value;
21+
use crate::binding::v8__HeapCodeStatistics;
2122
use crate::binding::v8__HeapSpaceStatistics;
2223
use crate::binding::v8__HeapStatistics;
2324
use crate::binding::v8__Isolate__UseCounterFeature;
@@ -668,7 +669,7 @@ unsafe extern "C" {
668669
) -> bool;
669670
fn v8__Isolate__GetHeapCodeAndMetadataStatistics(
670671
isolate: *mut RealIsolate,
671-
code_statistics: *mut HeapCodeStatistics,
672+
code_statistics: *mut v8__HeapCodeStatistics,
672673
) -> bool;
673674
fn v8__Isolate__AddNearHeapLimitCallback(
674675
isolate: *mut RealIsolate,
@@ -1280,16 +1281,17 @@ impl Isolate {
12801281
pub fn get_heap_code_and_metadata_statistics(
12811282
&mut self,
12821283
) -> Option<HeapCodeStatistics> {
1283-
unsafe {
1284+
let inner = unsafe {
12841285
let mut s = MaybeUninit::zeroed();
12851286
if !v8__Isolate__GetHeapCodeAndMetadataStatistics(
12861287
self.as_real_ptr(),
12871288
s.as_mut_ptr(),
12881289
) {
12891290
return None;
12901291
}
1291-
Some(s.assume_init())
1292-
}
1292+
s.assume_init()
1293+
};
1294+
Some(HeapCodeStatistics(inner))
12931295
}
12941296

12951297
/// Tells V8 to capture current stack trace when uncaught exception occurs
@@ -2257,29 +2259,23 @@ impl HeapSpaceStatistics {
22572259
}
22582260
}
22592261

2260-
#[repr(C)]
2261-
pub struct HeapCodeStatistics {
2262-
code_and_metadata_size_: usize,
2263-
bytecode_and_metadata_size_: usize,
2264-
external_script_source_size_: usize,
2265-
cpu_profiler_metadata_size_: usize,
2266-
}
2262+
pub struct HeapCodeStatistics(v8__HeapCodeStatistics);
22672263

22682264
impl HeapCodeStatistics {
22692265
pub fn code_and_metadata_size(&self) -> usize {
2270-
self.code_and_metadata_size_
2266+
self.0.code_and_metadata_size_
22712267
}
22722268

22732269
pub fn bytecode_and_metadata_size(&self) -> usize {
2274-
self.bytecode_and_metadata_size_
2270+
self.0.bytecode_and_metadata_size_
22752271
}
22762272

22772273
pub fn external_script_source_size(&self) -> usize {
2278-
self.external_script_source_size_
2274+
self.0.external_script_source_size_
22792275
}
22802276

22812277
pub fn cpu_profiler_metadata_size(&self) -> usize {
2282-
self.cpu_profiler_metadata_size_
2278+
self.0.cpu_profiler_metadata_size_
22832279
}
22842280
}
22852281

0 commit comments

Comments
 (0)