mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
timers: fix binding fast call signatures
PR-URL: https://github.com/nodejs/node/pull/59600 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
parent
4f4d5b348c
commit
8ca5fec567
|
|
@ -53,9 +53,8 @@ void BindingData::SlowScheduleTimer(const FunctionCallbackInfo<Value>& args) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BindingData::FastScheduleTimer(Local<Object> unused,
|
void BindingData::FastScheduleTimer(Local<Object> receiver, int64_t duration) {
|
||||||
Local<Object> receiver,
|
TRACK_V8_FAST_API_CALL("timers.scheduleTimer");
|
||||||
int64_t duration) {
|
|
||||||
ScheduleTimerImpl(FromJSObject<BindingData>(receiver), duration);
|
ScheduleTimerImpl(FromJSObject<BindingData>(receiver), duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -69,9 +68,8 @@ void BindingData::SlowToggleTimerRef(
|
||||||
args[0]->IsTrue());
|
args[0]->IsTrue());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BindingData::FastToggleTimerRef(Local<Object> unused,
|
void BindingData::FastToggleTimerRef(Local<Object> receiver, bool ref) {
|
||||||
Local<Object> receiver,
|
TRACK_V8_FAST_API_CALL("timers.toggleTimerRef");
|
||||||
bool ref) {
|
|
||||||
ToggleTimerRefImpl(FromJSObject<BindingData>(receiver), ref);
|
ToggleTimerRefImpl(FromJSObject<BindingData>(receiver), ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,9 +83,8 @@ void BindingData::SlowToggleImmediateRef(
|
||||||
args[0]->IsTrue());
|
args[0]->IsTrue());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BindingData::FastToggleImmediateRef(Local<Object> unused,
|
void BindingData::FastToggleImmediateRef(Local<Object> receiver, bool ref) {
|
||||||
Local<Object> receiver,
|
TRACK_V8_FAST_API_CALL("timers.toggleImmediateRef");
|
||||||
bool ref) {
|
|
||||||
ToggleImmediateRefImpl(FromJSObject<BindingData>(receiver), ref);
|
ToggleImmediateRefImpl(FromJSObject<BindingData>(receiver), ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
11
src/timers.h
11
src/timers.h
|
|
@ -31,23 +31,18 @@ class BindingData : public SnapshotableObject {
|
||||||
|
|
||||||
static void SlowScheduleTimer(
|
static void SlowScheduleTimer(
|
||||||
const v8::FunctionCallbackInfo<v8::Value>& args);
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||||
static void FastScheduleTimer(v8::Local<v8::Object> unused,
|
static void FastScheduleTimer(v8::Local<v8::Object> receiver,
|
||||||
v8::Local<v8::Object> receiver,
|
|
||||||
int64_t duration);
|
int64_t duration);
|
||||||
static void ScheduleTimerImpl(BindingData* data, int64_t duration);
|
static void ScheduleTimerImpl(BindingData* data, int64_t duration);
|
||||||
|
|
||||||
static void SlowToggleTimerRef(
|
static void SlowToggleTimerRef(
|
||||||
const v8::FunctionCallbackInfo<v8::Value>& args);
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||||
static void FastToggleTimerRef(v8::Local<v8::Object> unused,
|
static void FastToggleTimerRef(v8::Local<v8::Object> receiver, bool ref);
|
||||||
v8::Local<v8::Object> receiver,
|
|
||||||
bool ref);
|
|
||||||
static void ToggleTimerRefImpl(BindingData* data, bool ref);
|
static void ToggleTimerRefImpl(BindingData* data, bool ref);
|
||||||
|
|
||||||
static void SlowToggleImmediateRef(
|
static void SlowToggleImmediateRef(
|
||||||
const v8::FunctionCallbackInfo<v8::Value>& args);
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||||
static void FastToggleImmediateRef(v8::Local<v8::Object> unused,
|
static void FastToggleImmediateRef(v8::Local<v8::Object> receiver, bool ref);
|
||||||
v8::Local<v8::Object> receiver,
|
|
||||||
bool ref);
|
|
||||||
static void ToggleImmediateRefImpl(BindingData* data, bool ref);
|
static void ToggleImmediateRefImpl(BindingData* data, bool ref);
|
||||||
|
|
||||||
static void CreatePerIsolateProperties(IsolateData* isolate_data,
|
static void CreatePerIsolateProperties(IsolateData* isolate_data,
|
||||||
|
|
|
||||||
28
test/parallel/test-timers-fast-calls.js
Normal file
28
test/parallel/test-timers-fast-calls.js
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Flags: --allow-natives-syntax --expose-internals --no-warnings
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const common = require('../common');
|
||||||
|
const assert = require('assert');
|
||||||
|
|
||||||
|
const { internalBinding } = require('internal/test/binding');
|
||||||
|
const binding = internalBinding('timers');
|
||||||
|
|
||||||
|
function testFastCalls() {
|
||||||
|
binding.scheduleTimer(1);
|
||||||
|
binding.toggleTimerRef(true);
|
||||||
|
binding.toggleTimerRef(false);
|
||||||
|
binding.toggleImmediateRef(true);
|
||||||
|
binding.toggleImmediateRef(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
eval('%PrepareFunctionForOptimization(testFastCalls)');
|
||||||
|
testFastCalls();
|
||||||
|
eval('%OptimizeFunctionOnNextCall(testFastCalls)');
|
||||||
|
testFastCalls();
|
||||||
|
|
||||||
|
if (common.isDebug) {
|
||||||
|
const { getV8FastApiCallCount } = internalBinding('debug');
|
||||||
|
assert.strictEqual(getV8FastApiCallCount('timers.scheduleTimer'), 1);
|
||||||
|
assert.strictEqual(getV8FastApiCallCount('timers.toggleTimerRef'), 2);
|
||||||
|
assert.strictEqual(getV8FastApiCallCount('timers.toggleImmediateRef'), 2);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user