mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-08 06:09:58 +00:00
By adding static_asserts to prove that all of our generated instruction classes are trivially destructible, we can confidently remove the destructor walk in BasicBlock and save ourselves some unnecessary work.
32 lines
672 B
C++
32 lines
672 B
C++
/*
|
|
* Copyright (c) 2021, Andreas Kling <andreas@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <AK/String.h>
|
|
#include <LibJS/Bytecode/BasicBlock.h>
|
|
#include <LibJS/Bytecode/Op.h>
|
|
|
|
namespace JS::Bytecode {
|
|
|
|
NonnullOwnPtr<BasicBlock> BasicBlock::create(u32 index, String name)
|
|
{
|
|
return adopt_own(*new BasicBlock(index, move(name)));
|
|
}
|
|
|
|
BasicBlock::BasicBlock(u32 index, String name)
|
|
: m_index(index)
|
|
, m_name(move(name))
|
|
{
|
|
}
|
|
|
|
BasicBlock::~BasicBlock() = default;
|
|
|
|
void BasicBlock::grow(size_t additional_size)
|
|
{
|
|
m_buffer.grow_capacity(m_buffer.size() + additional_size);
|
|
m_buffer.resize(m_buffer.size() + additional_size);
|
|
}
|
|
|
|
}
|