mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 05:09:12 +00:00
LibWeb: Only set prototype once for object with IDL interface
Before this change, we were going through the chain of base classes for each IDL interface object and having them set the prototype to their prototype. Instead of doing that, reorder things so that we set the right prototype immediately in Foo::initialize(), and then don't bother in all the base class overrides. This knocks off a ~1% profile item on Speedometer 3.
This commit is contained in:
parent
7884e58b5c
commit
a6dfc74e93
Notes:
github-actions[bot]
2025-04-20 16:44:17 +00:00
Author: https://github.com/awesomekling
Commit: a6dfc74e93
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4408
417 changed files with 423 additions and 423 deletions
|
@ -331,8 +331,8 @@ WebIDL::ExceptionOr<GC::Ref<AnalyserNode>> AnalyserNode::construct_impl(JS::Real
|
|||
|
||||
void AnalyserNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AnalyserNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -148,8 +148,8 @@ AudioBuffer::AudioBuffer(JS::Realm& realm, AudioBufferOptions const& options)
|
|||
|
||||
void AudioBuffer::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioBuffer);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioBuffer::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -166,8 +166,8 @@ WebIDL::ExceptionOr<GC::Ref<AudioBufferSourceNode>> AudioBufferSourceNode::const
|
|||
|
||||
void AudioBufferSourceNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioBufferSourceNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioBufferSourceNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -113,8 +113,8 @@ AudioContext::~AudioContext() = default;
|
|||
|
||||
void AudioContext::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioContext);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioContext::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -50,8 +50,8 @@ WebIDL::ExceptionOr<GC::Ref<AudioDestinationNode>> AudioDestinationNode::constru
|
|||
|
||||
void AudioDestinationNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioDestinationNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioDestinationNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -73,8 +73,8 @@ WebIDL::ExceptionOr<void> AudioListener::set_orientation(float x, float y, float
|
|||
|
||||
void AudioListener::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioListener);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioListener::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -216,8 +216,8 @@ Bindings::ChannelInterpretation AudioNode::channel_interpretation()
|
|||
|
||||
void AudioNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -141,8 +141,8 @@ WebIDL::ExceptionOr<GC::Ref<AudioParam>> AudioParam::cancel_and_hold_at_time(dou
|
|||
|
||||
void AudioParam::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioParam);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioParam::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -72,8 +72,8 @@ WebIDL::ExceptionOr<void> AudioScheduledSourceNode::stop(double when)
|
|||
|
||||
void AudioScheduledSourceNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioScheduledSourceNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void AudioScheduledSourceNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -38,8 +38,8 @@ BaseAudioContext::~BaseAudioContext() = default;
|
|||
|
||||
void BaseAudioContext::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(BaseAudioContext);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void BaseAudioContext::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -102,8 +102,8 @@ WebIDL::ExceptionOr<GC::Ref<BiquadFilterNode>> BiquadFilterNode::construct_impl(
|
|||
|
||||
void BiquadFilterNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(BiquadFilterNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void BiquadFilterNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -50,8 +50,8 @@ WebIDL::ExceptionOr<GC::Ref<ChannelSplitterNode>> ChannelSplitterNode::construct
|
|||
|
||||
void ChannelSplitterNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
AudioNode::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(ChannelSplitterNode);
|
||||
AudioNode::initialize(realm);
|
||||
}
|
||||
|
||||
WebIDL::ExceptionOr<void> ChannelSplitterNode::set_channel_count(WebIDL::UnsignedLong channel_count)
|
||||
|
|
|
@ -34,8 +34,8 @@ WebIDL::ExceptionOr<GC::Ref<ConstantSourceNode>> ConstantSourceNode::construct_i
|
|||
|
||||
void ConstantSourceNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(ConstantSourceNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void ConstantSourceNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -51,8 +51,8 @@ WebIDL::ExceptionOr<GC::Ref<DelayNode>> DelayNode::construct_impl(JS::Realm& rea
|
|||
|
||||
void DelayNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(DelayNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void DelayNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -51,8 +51,8 @@ DynamicsCompressorNode::DynamicsCompressorNode(JS::Realm& realm, GC::Ref<BaseAud
|
|||
|
||||
void DynamicsCompressorNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(DynamicsCompressorNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void DynamicsCompressorNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -47,8 +47,8 @@ GainNode::GainNode(JS::Realm& realm, GC::Ref<BaseAudioContext> context, GainOpti
|
|||
|
||||
void GainNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(GainNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void GainNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -34,8 +34,8 @@ WebIDL::ExceptionOr<GC::Ref<MediaElementAudioSourceNode>> MediaElementAudioSourc
|
|||
|
||||
void MediaElementAudioSourceNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(MediaElementAudioSourceNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void MediaElementAudioSourceNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -99,8 +99,8 @@ OfflineAudioContext::OfflineAudioContext(JS::Realm& realm, WebIDL::UnsignedLong
|
|||
|
||||
void OfflineAudioContext::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(OfflineAudioContext);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void OfflineAudioContext::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -83,8 +83,8 @@ void OscillatorNode::set_periodic_wave(GC::Ptr<PeriodicWave> periodic_wave)
|
|||
|
||||
void OscillatorNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(OscillatorNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void OscillatorNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -80,8 +80,8 @@ PannerNode::PannerNode(JS::Realm& realm, GC::Ref<BaseAudioContext> context, Pann
|
|||
|
||||
void PannerNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(PannerNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void PannerNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -107,8 +107,8 @@ PeriodicWave::~PeriodicWave() = default;
|
|||
|
||||
void PeriodicWave::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(PeriodicWave);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void PeriodicWave::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
|
@ -72,8 +72,8 @@ StereoPannerNode::StereoPannerNode(JS::Realm& realm, GC::Ref<BaseAudioContext> c
|
|||
|
||||
void StereoPannerNode::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(StereoPannerNode);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void StereoPannerNode::visit_edges(Cell::Visitor& visitor)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue