Bert Belder
c4c48f30b1
v8: fix segfault during concurrent isolate creation/disposal on Windows ( #829 )
...
This patch includes a test for this issue.
The V8 patch is intentionally left simple to avoid merge conflicts in
the future. To be landed upstream, the `unwindinfo_use_count_` would
probably have to be made non-atomic and we'd have to add a cctest.
Upstream bug: https://bugs.chromium.org/p/v8/issues/detail?id=12393
Fixes: #714
2021-11-17 09:52:27 -08:00
Andreu Botella
aac37a6d4f
refactor: Have BackingStore::data
return Option<NonNull<c_void>>
( #817 )
...
The pointer returned by `BackingStore::data` might be null if the
backing store has zero length, but the return type `*mut c_void` does
not force the user to consider this case. This change makes the return
type `Option<NonNull<c_void>>`, which is semantically equivalent, but
which forces users of the API to handle the `None` case.
This is a breaking API change.
2021-11-17 12:14:03 +01:00
Rafael Ávila de Espíndola
a043407ae8
Make lifetime in FunctionCallback
signature more restrictive ( #822 )
...
This makes the callbacks themselves less restrictive. A test is added
the would fail to compile before.
2021-11-08 12:51:53 -08:00
Luca Casonato
5ee0a375f2
chore: rename rusty_v8 to v8 ( #803 )
2021-10-27 14:32:12 +02:00
Andreu Botella
2a21f5abf9
fix: Make derefing a zero-size BackingStore
no longer UB ( #809 )
...
For zero-size `BackingStore`s, it seems like `BackingStore::data` always
returns a null pointer. The `Deref` impl for `BackingStore` called
`std::slice::from_raw_parts` on that pointer, even though it is UB to
call that function on a null pointer even for empty slices. This change
fixes that by obtaining a valid pointer from `NonNull::dangling()` if
the original is null.
Reported in
https://github.com/denoland/rusty_v8/issues/711#issuecomment-950637136 .
2021-10-25 22:40:14 +02:00
Bert Belder
d478c450dd
Rename Handle::get() to Handle::open() instead ( #806 )
...
This also adds a deprecated `Global::get()` method to avoid unnecessarily
breaking a lot of users code.
Ref: #799
2021-10-13 21:45:10 +02:00
Rafael Ávila de Espíndola
8285b3da34
Rename Handle::get() to Handle::inner() ( #799 )
2021-10-13 16:47:34 +02:00
Aaron O'Mullan
6ccf15c69d
feat: Function::get/set_name() ( #792 )
...
Add bindings for v8::Function::GetName() and v8::Function::SetName()
2021-10-01 22:38:05 +02:00
Andreu Botella
b32d0b0540
feat: WasmStreaming::set_url
, CompiledWasmModule::source_url
( #786 )
...
Needed for denoland/deno#12151
2021-09-22 14:34:39 -04:00
Ben Noordhuis
09347d32c8
Throw DataCloneError if SAB cannot be cloned ( #781 )
...
Best case, it produces serialized output that cannot be deserialized.
Worst case, it hits this assert in V8:
# Fatal error in v8::FromJust
# Maybe value is Nothing.
2021-09-18 15:21:04 +02:00
Andreu Botella
babe41a990
feat: Add v8::CompiledWasmModule
( #776 )
...
`v8::CompiledWasmModule` is a representation of a compiled WebAssembly
module, which can be shared by multiple `v8::WasmModuleObject`s.
Closes #759 .
2021-09-17 12:02:40 -04:00
Yusuke Tanaka
674f44449f
chore: upgrade Rust to 1.55.0 ( #770 )
2021-09-10 12:32:29 +02:00
Rami Sabbagh
16708359bc
feat: Implement Isolate::remove_slot ( #769 )
2021-09-09 00:41:50 +02:00
Ben Noordhuis
cb07d4f914
feat: implement counter_lookup_callback ( #756 )
2021-08-19 14:05:48 +02:00
Bartek Iwańczuk
c525555e42
feat: add V8InspectorSession::can_dispatch_method ( #746 )
2021-08-09 15:53:30 +02:00
Ben Noordhuis
24bef1e54b
chore: test String object serialization ( #747 )
...
Serializing `new String("")` requires that the wire format header is
written, otherwise V8 assumes an incompatible legacy wire format when
deserializing.
2021-08-07 23:33:53 +02:00
Ben Noordhuis
b56902c306
fix: remove race in terminate_execution test ( #736 )
...
The test started a new thread that slept for a bit, then terminated the
isolate, assuming that the delay was long enough for the isolate and the
context to get fully initialized. It wasn't.
Fixes #710 .
2021-07-11 22:32:34 +02:00
Bartek Iwańczuk
45006fb7e7
Add Isolate::has_pending_background_tasks ( #724 )
2021-07-02 20:17:48 +02:00
Tim Ramlot
14bcf04bef
Add support for Platform::pump_message_loop and Platform::run_idle_tasks ( #706 )
...
Co-authored-by: Ben Noordhuis <info@bnoordhuis.nl>
2021-07-01 16:05:07 +02:00
Jomer
89c8ae8af3
feat: add various FunctionTemplate methods ( #718 )
...
This commit adds the following methods:
* `FunctionTemplate::inherit()`
* `FunctionTemplate::prototype_template()`
* `FunctionTemplate::read_only_prototype()`
* `FunctionTemplate::remove_prototype()`
2021-06-30 16:55:14 +02:00
Luca Casonato
cfa5d7060f
fix: pass serializer helpers as mut refs ( #712 )
...
They are only useful in read_host_object and write_host_object if
the helpers are available as a mut ref.
2021-06-24 15:59:03 +02:00
Andreu Botella
dfd5842913
Add missing methods for one- and two-byte strings ( #704 )
...
Fixes #703 .
2021-06-22 14:11:38 +02:00
Yusuke Tanaka
f85508868e
chore: upgrade Rust to 1.53.0 ( #705 )
2021-06-18 11:35:53 -04:00
Ryan Dahl
fca78fb0c1
Rename set_common_data to set_common_data_69 ( #702 )
2021-06-18 06:55:38 -04:00
Matthew McAllister
6d25d19b4c
Add ObjectTemplate::set_accessor{_with_setter}
( #687 )
2021-05-11 16:40:53 +02:00
Ben Noordhuis
92ea90bdbf
Add ScriptCompiler::compile_function_in_context() ( #670 )
2021-04-27 20:32:40 +02:00
Ben Noordhuis
efa6c71b10
Add Signature::new() ( #666 )
...
Refs #478 .
2021-04-20 12:48:20 +02:00
Ben Noordhuis
03e74c6f1b
Add new_single_threaded_default_platform() ( #659 )
...
This is a v8::Platform implementation that doesn't spawn additional
threads. Useful in combination with the --single_threaded flag.
2021-04-12 21:40:52 +02:00
Bert Belder
de9a7e2698
String::new_external_onebyte_static() should take &[u8]
instead of &str
( #658 )
2021-04-09 19:49:55 +02:00
Ryan Dahl
d78cc3df87
Upgrade V8 to 9.1.246 ( #655 )
2021-04-03 09:46:38 -04:00
Ryan Dahl
d520fe85bd
Add String::new_from_one_byte ( #654 )
2021-04-02 16:23:05 -04:00
Ben Noordhuis
7d514ae4cb
Add ArrayBuffer::detach() and is_detachable() ( #648 )
...
Fixes #646 .
2021-03-16 23:35:27 +01:00
Ben Noordhuis
25608cc000
build: upgrade Rust to 1.50.0 ( #645 )
2021-03-16 21:05:14 +01:00
Aaron O'Mullan
f2766ed1af
Support for external v8 strings ( #641 )
2021-03-07 10:21:59 -05:00
Heyang Zhou
a6d36d1193
Add more ScriptCompiler APIs ( #638 )
2021-03-07 08:05:50 -05:00
Heyang Zhou
be89cfc131
Add code cache API ( #635 )
2021-03-05 05:26:37 -05:00
Kohei Ueno
dcca57b986
chore: add tests for return values of a function ( #634 )
2021-02-25 10:18:06 -05:00
Bartek Iwańczuk
8551c62511
Add Module::source_offset_to_location, deprecate old APIs ( #624 )
2021-02-15 12:08:39 +01:00
Bartek Iwańczuk
ec54f28bfd
feat: Add ModuleRequest ( #623 )
2021-02-14 19:49:37 +01:00
Ryan Dahl
50a15085f7
update copyrights to 2021 ( #620 )
2021-02-13 07:31:18 -05:00
Ryan Dahl
753b92fd96
ICU data must be 16-bit aligned ( #617 )
2021-02-12 05:45:02 -05:00
Ben Noordhuis
5dc6117dd7
Fix ValueDeserializer::read_value() lifetime ( #609 )
...
The return value should have the lifetime of the context, not the
deserializer.
Fixes #607 .
2021-02-10 07:27:27 +01:00
Ryan Dahl
d60489c395
Support ICU ( #603 )
...
Co-authored-by: Kunihiro Ishiguro <kunihiro@zebra.dev>
2021-02-09 09:17:02 -05:00
Ben Noordhuis
64aa11e34d
Add Isolate::set_prepare_stack_trace_callback() ( #594 )
...
Refs: https://github.com/denoland/deno/issues/7644
2021-02-08 13:11:48 +01:00
Bartek Iwańczuk
d6be279a06
Add support for import assertions ( #598 )
...
This commit adds support for import assertions.
Major changes include:
- removal of "ResolveCallback" (deprecated in V8)
in favor of "ModuleResolveCallback"
- removal of "HostImportModuleDynamicallyCallback" (deprecated in V8)
in favor of "HostImportModuleDynamicallyWithImportAssertionsCallback"
2021-02-05 00:22:26 +01:00
Ben Noordhuis
30ad399f9b
Add V8InspectorClientImpl::generate_unique_id() ( #590 )
2021-01-21 10:06:34 +01:00
Ben Noordhuis
0d093a02f6
Upgrade V8 to 8.9.255.3 ( #567 )
...
This floats https://chromium-review.googlesource.com/c/v8/v8/+/2608209
because it just missed the merge window for 8.9.
2021-01-18 21:46:44 +01:00
Heyang Zhou
bcbe7e9348
Support setting OOM callback on Isolate
( #585 )
2021-01-16 10:30:38 +01:00
Heyang Zhou
3fd7cae994
Expose ArrayBuffer::Allocator interface ( #578 )
2021-01-14 23:29:06 +01:00
Ben Noordhuis
5cb14847aa
Expose v8::WriteOptions ( #583 )
...
Without it, v8::String::write_utf8() is pretty much unusable.
2021-01-13 00:49:59 +01:00
Heyang Zhou
584a037800
Add Script::get_unbound_script() and UnboundScript::bind_to_current_context() ( #572 )
2021-01-11 19:39:51 -08:00
Daniel Bevenius
54a72d7628
Remove set_flags_from_command_line_with_usage test ( #570 )
...
This commit removes the set_flags_from_command_line_with_usage and puts
it in an example code section instead.
The motivation for doing this is that the test output currently contains
the usage string and all the V8 options which creates a lot of output
when the tests is run regardless if --nocapture is used or not.
2021-01-07 22:42:30 +01:00
Ben Noordhuis
ea412d0554
Add Isolate::set_wasm_streaming_callback() ( #560 )
...
Add the hook necessary to implement `WebAssembly.compileStreaming()`.
Fixes #556
2020-12-31 16:06:29 +01:00
Bartek Iwańczuk
41f29a19c4
Isolate::thread_safe_handle() no longer requires mutable reference ( #562 )
2020-12-30 23:30:30 -08:00
Bartek Iwańczuk
cf7bb2d001
Add methods for termination to Isolate ( #561 )
...
This commit adds following methods to Isolate:
- terminate_execution
- cancel_terminate_execution
- is_execution_terminating
2020-12-25 22:45:57 +01:00
Ben Noordhuis
f37601cab2
Add FunctionBuilder ( #512 )
...
v8::Function and v8::FunctionTemplate have a lot of options that can be
configured. The builder() associated functions on those types help with
that.
2020-12-07 17:03:46 -05:00
Ben Noordhuis
530c876aff
Make Private work with context-less HandleScope ( #549 )
...
v8::Private is like v8::String and other primitives, it doesn't need an
active v8::Context.
2020-12-07 16:48:51 -05:00
Daniel Bevenius
4e8eaf94c3
Add set_flags_from_command_line_with_usage ( #536 )
...
The motivation for this is to enable embedders of rusty_v8 to
pass their own usage string and have their usage printed before V8's
options.
2020-12-07 16:46:38 -05:00
Daniel Bevenius
29396ed40a
typo ( #542 )
2020-12-07 15:32:09 -05:00
Ben Noordhuis
343d7f2800
Make Symbol work with context-less HandleScope ( #550 )
...
v8::Symbol is like v8::String and other primitives, it doesn't need an
active v8::Context.
2020-12-04 13:56:55 +01:00
Ben Noordhuis
c1509cac08
Make PromiseHookType Clone, Copy and PartialEq ( #548 )
2020-12-04 13:56:27 +01:00
Bartek Iwańczuk
2d68950e7e
build: upgrade Rust to 1.48.0 ( #535 )
2020-11-19 19:44:06 +01:00
Ben Noordhuis
64faf683d2
Add Value::to_rust_string_lossy() ( #530 )
...
If it's convenient to have on String objects, then it's convenient to
have on all Value instances.
2020-11-19 11:58:23 +01:00
Ben Noordhuis
3fa9fb36ed
Fix runtime assert when hashing module object ( #522 )
...
The blanket `std:#️⃣ :Hash` impl for instances of `v8::Data` invokes
`v8::internal::Object::GetHash()` but that crashes for `v8::Module`
objects. Use a custom impl that calls `v8::Module::get_identity_hash()`.
Fixes the following runtime assertion:
# Fatal error in ../../../v8/src/objects/objects-inl.h, line 1043
# Debug check failed: object.IsJSReceiver().
Refs: https://github.com/denoland/deno/pull/8354#discussion_r522157813
2020-11-15 00:07:52 +01:00
l3ops
fb049cb934
Add Function::new_instance ( #508 )
2020-10-26 08:57:14 +01:00
Ben Noordhuis
b8a2e06dc8
Add Isolate::clear_kept_objects() ( #507 )
...
Refs: https://github.com/denoland/deno/issues/7674
2020-10-21 08:00:44 +02:00
Ben Noordhuis
1988c98f3c
Add Isolate::set_allow_atomics_wait() ( #500 )
2020-10-15 22:12:44 +02:00
Ben Noordhuis
1c38b66093
Add Object::get_private() and friends ( #498 )
2020-10-15 14:37:29 +02:00
Ben Noordhuis
836557e84f
Add Module::script_id() ( #497 )
2020-10-15 11:05:38 +02:00
Ben Noordhuis
57390ec4ee
Add Isolate::set_promise_hook() ( #496 )
2020-10-12 22:33:46 +02:00
Ben Noordhuis
ea0c7c9383
Fix PromiseRejectMessage::get_value() ( #493 )
...
Change its return type to `Option<Local<Value>>`. The C++ API
returns `Local<Value>` but that can be an empty handle.
Fixes #491
2020-10-09 12:58:57 +02:00
devsnek
4f924a686a
add all TypedArray constructors ( #482 )
2020-10-06 14:16:22 -04:00
Inteon
dbc0509f2a
add basic serializer bindings ( #442 )
2020-10-06 18:39:38 +02:00
devsnek
e5f56e218c
add Symbol, Private, BigInt ( #466 )
2020-09-29 20:20:07 -04:00
Ben Noordhuis
6b90cbe499
add Object + ObjectTemplate internal field support ( #477 )
...
The rusty_v8 API deviates slightly from the V8 C++ API because the
latter is definitely unsound when you pass in out-of-range indexes.
2020-09-29 19:04:59 -04:00
devsnek
405a5a5158
Add APIs to store/retrieve embedder data in a Context or Isolate snapshot ( #449 )
...
Co-authored-by: Bert Belder <bertbelder@gmail.com>
2020-09-10 02:39:49 +02:00
Gus Caplan
3b27748a17
Implement TryFrom<Data> for subclasses of Data ( #453 )
2020-09-09 02:21:58 +02:00
Bert Belder
6409d8b112
Upgrade V8 to 8.7.75 ( #462 )
2020-09-08 03:02:57 +02:00
Ben Noordhuis
d60e367a9b
Add V8::set_entropy_source() ( #460 )
2020-09-08 03:01:36 +02:00
Bert Belder
b31dbc89dc
Simplify 'Isolate::get/set_slot()' and use optimized hasher ( #461 )
2020-09-07 19:50:36 +02:00
Moritz Gunz
8513c8fa69
Add bindings to 'v8::Isolate::LowMemoryNotification()' ( #459 )
2020-09-07 13:00:35 +02:00
Ben Noordhuis
de58267948
Add V8::set_flags_from_string() ( #457 )
2020-09-06 15:40:07 -04:00
Bert Belder
21f6ecf483
Fix flaky tests caused by relaxed load in C++ 'shared_ptr::use_count()' ( #450 )
...
Fixes: #284
2020-09-02 17:38:39 +02:00
Ben Noordhuis
b88f9f5bbc
Add Date::new() and Date::value_of() ( #452 )
2020-09-01 22:28:08 -04:00
Bert Belder
e88ea4ad01
Downgrade to V8 8.6.334 again ( #447 )
...
After the upgrade some Deno tests started crashing somewhere deep inside
V8, and the cause of these crashes is unclear.
This reverts the following commits:
* 12334ffe
Upgrade gn to 6f13aaac; make BUILD.gn compatible with it (#443 )
* f53f10d4
Upgrade V8 to 8.7.25 (#443 )
2020-08-28 17:52:05 +02:00
Ryan Dahl
f53f10d41f
Upgrade V8 to 8.7.25 ( #443 )
2020-08-27 23:38:54 +02:00
Bert Belder
fdc03238c4
ci: upgrade to Rust 1.46.0 ( #443 )
2020-08-27 23:38:53 +02:00
devsnek
6d5686cd7c
Add synthetic module support ( #441 )
2020-08-25 17:39:18 -04:00
Ben Noordhuis
6b2c7a56a7
Add Isolate::[gs]et_microtasks_policy() ( #439 )
...
Isolate::run_microtasks() already exists but the microtasks queue
is also flushed on script entry and exit. Some embedders want strict
control over when microtasks run, which is set by the policy.
And deprecate Isolate::run_microtasks(). The corresponding V8 API is
tagged with V8_DEPRECATE_SOON.
2020-08-23 10:25:16 -04:00
Ben Noordhuis
fd5458c959
Add Isolate::get_heap_statistics() ( #440 )
2020-08-23 10:16:45 -04:00
Bert Belder
954163ab07
Fix the 'heap_limits' test ( #430 )
...
After upgrading to V8 8.6.337, with a 20 MB heap limit, the
near-heap-limit callback never gets called before V8 runs out of memory.
It turns out that this test exhibits memory allocation behavior which
produces so little actual garbage that 'scavenge' type garbage
collections make memory usage go up rather than down. Because of this,
V8 runs out of memory in the middle of a garbage collection cycle, after
it has already decided that there's no need to run the near-heap-limit
callback.
The issue is fixed by making sure that some actual garbage is produced
alongside with the retained objects that will eventually fill up the
heap.
2020-08-06 04:08:14 +02:00
Marcus Weiner
b0dc42f900
Add support for setting V8 heap limits and using a near-heap-limit callback ( #427 )
2020-07-30 18:40:18 +02:00
Ben Sheffield
e74b6bcd0d
Add 'Object::set_accessor_with_setter' ( #422 )
2020-07-17 11:17:29 -04:00
Bert Belder
9684640b48
Implement the 'Hash' trait for local and global handles ( #415 )
2020-07-08 10:27:34 +02:00
Bert Belder
82d0287028
'External' handles can be created without entering a Context ( #416 )
2020-07-05 01:36:51 +02:00
Bert Belder
91c8c7d1c7
Implement 'Eq' for all subtypes of 'Value' and its handles ( #414 )
2020-07-04 07:11:56 +02:00
Bert Belder
d3f6e4d36c
Add 'Value::same_value_zero()' ( #414 )
2020-07-04 07:11:04 +02:00
Skyler Lipthay
1b84bc74f6
Add 'Value::boolean_value()' and 'Value::to_boolean()' ( #412 )
2020-07-03 14:42:19 +02:00
Skyler Lipthay
8ebfb027c0
Add 'Object::has(_index)' and 'Object::delete(_index)' ( #412 )
2020-07-03 14:41:40 +02:00
Bert Belder
b981aaceee
Add 'External::new()' and 'External::value()' ( #413 )
2020-07-03 14:01:42 +02:00