mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
src: add SetFastMethodNoSideEffect()
The original SetFastMethod() uses v8::SideEffectType::kHasNoSideEffect by default, which is different from SetMethod(). Follow the previous convention and add a new SetFastMethodNoSideEffect() instead. PR-URL: https://github.com/nodejs/node/pull/46619 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
@@ -481,8 +481,9 @@ v8::CFunction BindingData::fast_bigint_(v8::CFunction::Make(FastBigInt));
|
||||
|
||||
void BindingData::AddMethods() {
|
||||
Local<Context> ctx = env()->context();
|
||||
SetFastMethod(ctx, object(), "hrtime", SlowNumber, &fast_number_);
|
||||
SetFastMethod(ctx, object(), "hrtimeBigInt", SlowBigInt, &fast_bigint_);
|
||||
SetFastMethodNoSideEffect(ctx, object(), "hrtime", SlowNumber, &fast_number_);
|
||||
SetFastMethodNoSideEffect(
|
||||
ctx, object(), "hrtimeBigInt", SlowBigInt, &fast_bigint_);
|
||||
}
|
||||
|
||||
void BindingData::RegisterExternalReferences(
|
||||
|
||||
21
src/util.cc
21
src/util.cc
@@ -398,6 +398,27 @@ void SetFastMethod(Local<v8::Context> context,
|
||||
v8::FunctionCallback slow_callback,
|
||||
const v8::CFunction* c_function) {
|
||||
Isolate* isolate = context->GetIsolate();
|
||||
Local<v8::Function> function =
|
||||
NewFunctionTemplate(isolate,
|
||||
slow_callback,
|
||||
Local<v8::Signature>(),
|
||||
v8::ConstructorBehavior::kThrow,
|
||||
v8::SideEffectType::kHasSideEffect,
|
||||
c_function)
|
||||
->GetFunction(context)
|
||||
.ToLocalChecked();
|
||||
const v8::NewStringType type = v8::NewStringType::kInternalized;
|
||||
Local<v8::String> name_string =
|
||||
v8::String::NewFromUtf8(isolate, name, type).ToLocalChecked();
|
||||
that->Set(context, name_string, function).Check();
|
||||
}
|
||||
|
||||
void SetFastMethodNoSideEffect(Local<v8::Context> context,
|
||||
Local<v8::Object> that,
|
||||
const char* name,
|
||||
v8::FunctionCallback slow_callback,
|
||||
const v8::CFunction* c_function) {
|
||||
Isolate* isolate = context->GetIsolate();
|
||||
Local<v8::Function> function =
|
||||
NewFunctionTemplate(isolate,
|
||||
slow_callback,
|
||||
|
||||
@@ -897,6 +897,11 @@ void SetFastMethod(v8::Local<v8::Context> context,
|
||||
const char* name,
|
||||
v8::FunctionCallback slow_callback,
|
||||
const v8::CFunction* c_function);
|
||||
void SetFastMethodNoSideEffect(v8::Local<v8::Context> context,
|
||||
v8::Local<v8::Object> that,
|
||||
const char* name,
|
||||
v8::FunctionCallback slow_callback,
|
||||
const v8::CFunction* c_function);
|
||||
|
||||
void SetProtoMethod(v8::Isolate* isolate,
|
||||
v8::Local<v8::FunctionTemplate> that,
|
||||
|
||||
Reference in New Issue
Block a user