Skip to content

Commit d728545

Browse files
Renegade334targos
authored andcommitted
timers: fix binding fast call signatures
PR-URL: #59600 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
1 parent 8c21c4b commit d728545

3 files changed

Lines changed: 37 additions & 17 deletions

File tree

‎src/timers.cc‎

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,8 @@ void BindingData::SlowScheduleTimer(const FunctionCallbackInfo<Value>& args) {
5353
}
5454
}
5555

56-
voidBindingData::FastScheduleTimer(Local<Object> unused,
57-
Local<Object> receiver,
58-
int64_t duration) {
56+
voidBindingData::FastScheduleTimer(Local<Object> receiver, int64_t duration) {
57+
TRACK_V8_FAST_API_CALL("timers.scheduleTimer");
5958
ScheduleTimerImpl(FromJSObject<BindingData>(receiver), duration);
6059
}
6160

@@ -69,9 +68,8 @@ void BindingData::SlowToggleTimerRef(
6968
args[0]->IsTrue());
7069
}
7170

72-
voidBindingData::FastToggleTimerRef(Local<Object> unused,
73-
Local<Object> receiver,
74-
bool ref) {
71+
voidBindingData::FastToggleTimerRef(Local<Object> receiver, bool ref) {
72+
TRACK_V8_FAST_API_CALL("timers.toggleTimerRef");
7573
ToggleTimerRefImpl(FromJSObject<BindingData>(receiver), ref);
7674
}
7775

@@ -85,9 +83,8 @@ void BindingData::SlowToggleImmediateRef(
8583
args[0]->IsTrue());
8684
}
8785

88-
voidBindingData::FastToggleImmediateRef(Local<Object> unused,
89-
Local<Object> receiver,
90-
bool ref) {
86+
voidBindingData::FastToggleImmediateRef(Local<Object> receiver, bool ref) {
87+
TRACK_V8_FAST_API_CALL("timers.toggleImmediateRef");
9188
ToggleImmediateRefImpl(FromJSObject<BindingData>(receiver), ref);
9289
}
9390

‎src/timers.h‎

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,18 @@ class BindingData : public SnapshotableObject {
3131

3232
staticvoidSlowScheduleTimer(
3333
const v8::FunctionCallbackInfo<v8::Value>& args);
34-
staticvoidFastScheduleTimer(v8::Local<v8::Object> unused,
35-
v8::Local<v8::Object> receiver,
34+
staticvoidFastScheduleTimer(v8::Local<v8::Object> receiver,
3635
int64_t duration);
3736
staticvoidScheduleTimerImpl(BindingData* data, int64_t duration);
3837

3938
staticvoidSlowToggleTimerRef(
4039
const v8::FunctionCallbackInfo<v8::Value>& args);
41-
staticvoidFastToggleTimerRef(v8::Local<v8::Object> unused,
42-
v8::Local<v8::Object> receiver,
43-
bool ref);
40+
staticvoidFastToggleTimerRef(v8::Local<v8::Object> receiver, bool ref);
4441
staticvoidToggleTimerRefImpl(BindingData* data, bool ref);
4542

4643
staticvoidSlowToggleImmediateRef(
4744
const v8::FunctionCallbackInfo<v8::Value>& args);
48-
staticvoidFastToggleImmediateRef(v8::Local<v8::Object> unused,
49-
v8::Local<v8::Object> receiver,
50-
bool ref);
45+
staticvoidFastToggleImmediateRef(v8::Local<v8::Object> receiver, bool ref);
5146
staticvoidToggleImmediateRefImpl(BindingData* data, bool ref);
5247

5348
staticvoidCreatePerIsolateProperties(IsolateData* isolate_data,
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Flags: --allow-natives-syntax --expose-internals --no-warnings
2+
'use strict';
3+
4+
constcommon=require('../common');
5+
constassert=require('assert');
6+
7+
const{ internalBinding }=require('internal/test/binding');
8+
constbinding=internalBinding('timers');
9+
10+
functiontestFastCalls(){
11+
binding.scheduleTimer(1);
12+
binding.toggleTimerRef(true);
13+
binding.toggleTimerRef(false);
14+
binding.toggleImmediateRef(true);
15+
binding.toggleImmediateRef(false);
16+
}
17+
18+
eval('%PrepareFunctionForOptimization(testFastCalls)');
19+
testFastCalls();
20+
eval('%OptimizeFunctionOnNextCall(testFastCalls)');
21+
testFastCalls();
22+
23+
if(common.isDebug){
24+
const{ getV8FastApiCallCount }=internalBinding('debug');
25+
assert.strictEqual(getV8FastApiCallCount('timers.scheduleTimer'),1);
26+
assert.strictEqual(getV8FastApiCallCount('timers.toggleTimerRef'),2);
27+
assert.strictEqual(getV8FastApiCallCount('timers.toggleImmediateRef'),2);
28+
}

0 commit comments

Comments
 (0)