mirror of
https://github.com/SerenityOS/serenity
synced 2024-11-05 17:46:52 +00:00
7d71acf1bb
Instead of checking the address of a temporary, grab the address of the current frame pointer to determine how much memory is left on the stack. This better communicates to the compiler what we're trying to do, and resolves some crashes with ASAN in test-js while the option detect_stack_use_after_return is turned on.
36 lines
593 B
C++
36 lines
593 B
C++
/*
|
|
* Copyright (c) 2020, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Types.h>
|
|
|
|
namespace AK {
|
|
|
|
class StackInfo {
|
|
public:
|
|
StackInfo();
|
|
|
|
FlatPtr base() const { return m_base; }
|
|
FlatPtr top() const { return m_top; }
|
|
size_t size() const { return m_size; }
|
|
size_t size_free() const
|
|
{
|
|
auto p = reinterpret_cast<FlatPtr>(__builtin_frame_address(0));
|
|
return p - m_base;
|
|
}
|
|
|
|
private:
|
|
FlatPtr m_base;
|
|
FlatPtr m_top;
|
|
size_t m_size;
|
|
};
|
|
|
|
}
|
|
|
|
#if USING_AK_GLOBALLY
|
|
using AK::StackInfo;
|
|
#endif
|