mirror of
https://github.com/denoland/rusty_v8.git
synced 2025-03-10 05:56:52 -04:00
feat: add binding for ResourceConstraints::ConfigureDefaults
(#1651)
* add binding for `ResourceConstraints::ConfigureDefaults` * fmt * fix types
This commit is contained in:
parent
b0364c0c5e
commit
2509b0ba62
2 changed files with 56 additions and 0 deletions
|
@ -385,6 +385,12 @@ void v8__ResourceConstraints__ConfigureDefaultsFromHeapSize(
|
||||||
maximum_heap_size_in_bytes);
|
maximum_heap_size_in_bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void v8__ResourceConstraints__ConfigureDefaults(
|
||||||
|
v8::ResourceConstraints* constraints, uint64_t physical_memory,
|
||||||
|
uint64_t virtual_memory_limit) {
|
||||||
|
constraints->ConfigureDefaults(physical_memory, virtual_memory_limit);
|
||||||
|
}
|
||||||
|
|
||||||
void v8__HandleScope__CONSTRUCT(uninit_t<v8::HandleScope>* buf,
|
void v8__HandleScope__CONSTRUCT(uninit_t<v8::HandleScope>* buf,
|
||||||
v8::Isolate* isolate) {
|
v8::Isolate* isolate) {
|
||||||
construct_in_place<v8::HandleScope>(buf, isolate);
|
construct_in_place<v8::HandleScope>(buf, isolate);
|
||||||
|
|
|
@ -160,6 +160,37 @@ impl CreateParams {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Configures the constraints with reasonable default values based on the capabilities
|
||||||
|
/// of the current device the VM is running on.
|
||||||
|
///
|
||||||
|
/// By default V8 starts with a small heap and dynamically grows it to match
|
||||||
|
/// the set of live objects. This may lead to ineffective garbage collections
|
||||||
|
/// at startup if the live set is large. Setting the initial heap size avoids
|
||||||
|
/// such garbage collections. Note that this does not affect young generation
|
||||||
|
/// garbage collections.
|
||||||
|
///
|
||||||
|
/// When the heap size approaches its maximum, V8 will perform series of
|
||||||
|
/// garbage collections and invoke the
|
||||||
|
/// [NearHeapLimitCallback](struct.Isolate.html#method.add_near_heap_limit_callback).
|
||||||
|
/// If the garbage collections do not help and the callback does not
|
||||||
|
/// increase the limit, then V8 will crash with V8::FatalProcessOutOfMemory.
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// * `physical_memory` - The total amount of physical memory on the current device, in bytes.
|
||||||
|
/// * `virtual_memory_limit` - The amount of virtual memory on the current device, in bytes, or zero, if there is no limit.
|
||||||
|
pub fn heap_limits_from_system_memory(
|
||||||
|
mut self,
|
||||||
|
physical_memory: u64,
|
||||||
|
virtual_memory_limit: u64,
|
||||||
|
) -> Self {
|
||||||
|
self
|
||||||
|
.raw
|
||||||
|
.constraints
|
||||||
|
.configure_defaults(physical_memory, virtual_memory_limit);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// A CppHeap used to construct the Isolate. V8 takes ownership of the
|
/// A CppHeap used to construct the Isolate. V8 takes ownership of the
|
||||||
/// CppHeap passed this way.
|
/// CppHeap passed this way.
|
||||||
pub fn cpp_heap(mut self, heap: UniqueRef<Heap>) -> Self {
|
pub fn cpp_heap(mut self, heap: UniqueRef<Heap>) -> Self {
|
||||||
|
@ -269,6 +300,11 @@ pub(crate) mod raw {
|
||||||
initial_heap_size_in_bytes: usize,
|
initial_heap_size_in_bytes: usize,
|
||||||
maximum_heap_size_in_bytes: usize,
|
maximum_heap_size_in_bytes: usize,
|
||||||
);
|
);
|
||||||
|
fn v8__ResourceConstraints__ConfigureDefaults(
|
||||||
|
constraints: *mut ResourceConstraints,
|
||||||
|
physical_memory: u64,
|
||||||
|
virtual_memory_limit: u64,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ResourceConstraints {
|
impl ResourceConstraints {
|
||||||
|
@ -285,5 +321,19 @@ pub(crate) mod raw {
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn configure_defaults(
|
||||||
|
&mut self,
|
||||||
|
physical_memory: u64,
|
||||||
|
virtual_memory_limit: u64,
|
||||||
|
) {
|
||||||
|
unsafe {
|
||||||
|
v8__ResourceConstraints__ConfigureDefaults(
|
||||||
|
self,
|
||||||
|
physical_memory,
|
||||||
|
virtual_memory_limit,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue