libphobos: Remove unused variables in gcc.backtrace.
The core.runtime module always overrides the default parameter value for constructor calls. MaxAlignment is not required because a class can be created on the stack with the `scope' keyword. libphobos/ChangeLog: * libdruntime/core/runtime.d (runModuleUnitTests): Use scope to new LibBacktrace on the stack. * libdruntime/gcc/backtrace.d (FIRSTFRAME): Remove. (LibBacktrace.MaxAlignment): Remove. (LibBacktrace.this): Remove default initialization of firstFrame. (UnwindBacktrace.this): Likewise.
This commit is contained in:
parent
efa5449a09
commit
0111153234
|
@ -483,17 +483,9 @@ extern (C) bool runModuleUnitTests()
|
|||
fprintf(stderr, "Segmentation fault while running unittests:\n");
|
||||
fprintf(stderr, "----------------\n");
|
||||
|
||||
enum alignment = LibBacktrace.MaxAlignment;
|
||||
enum classSize = __traits(classInstanceSize, LibBacktrace);
|
||||
|
||||
void[classSize + alignment] bt_store = void;
|
||||
void* alignedAddress = cast(byte*)((cast(size_t)(bt_store.ptr + alignment - 1))
|
||||
& ~(alignment - 1));
|
||||
|
||||
(alignedAddress[0 .. classSize]) = typeid(LibBacktrace).initializer[];
|
||||
auto bt = cast(LibBacktrace)(alignedAddress);
|
||||
// First frame is LibBacktrace ctor. Second is signal handler, but include that for now
|
||||
bt.__ctor(1);
|
||||
// First frame is LibBacktrace ctor. Second is signal handler,
|
||||
// but include that for now
|
||||
scope bt = new LibBacktrace(1);
|
||||
|
||||
foreach (size_t i, const(char[]) msg; bt)
|
||||
fprintf(stderr, "%s\n", msg.ptr ? msg.ptr : "???");
|
||||
|
|
|
@ -24,24 +24,6 @@ module gcc.backtrace;
|
|||
|
||||
import gcc.libbacktrace;
|
||||
|
||||
version (Posix)
|
||||
{
|
||||
// NOTE: The first 5 frames with the current implementation are
|
||||
// inside core.runtime and the object code, so eliminate
|
||||
// these for readability. The alternative would be to
|
||||
// exclude the first N frames that are in a list of
|
||||
// mangled function names.
|
||||
private enum FIRSTFRAME = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
// NOTE: On Windows, the number of frames to exclude is based on
|
||||
// whether the exception is user or system-generated, so
|
||||
// it may be necessary to exclude a list of function names
|
||||
// instead.
|
||||
private enum FIRSTFRAME = 0;
|
||||
}
|
||||
|
||||
// Max size per line of the traceback.
|
||||
private enum MAX_BUFSIZE = 1536;
|
||||
|
||||
|
@ -205,8 +187,6 @@ static if (BACKTRACE_SUPPORTED && !BACKTRACE_USES_MALLOC)
|
|||
// FIXME: state is never freed as libbacktrace doesn't provide a free function...
|
||||
public class LibBacktrace : Throwable.TraceInfo
|
||||
{
|
||||
enum MaxAlignment = (void*).alignof;
|
||||
|
||||
static void initLibBacktrace()
|
||||
{
|
||||
if (!initialized)
|
||||
|
@ -216,7 +196,7 @@ static if (BACKTRACE_SUPPORTED && !BACKTRACE_USES_MALLOC)
|
|||
}
|
||||
}
|
||||
|
||||
this(int firstFrame = FIRSTFRAME)
|
||||
this(int firstFrame)
|
||||
{
|
||||
_firstFrame = firstFrame;
|
||||
|
||||
|
@ -365,7 +345,7 @@ else
|
|||
*/
|
||||
public class UnwindBacktrace : Throwable.TraceInfo
|
||||
{
|
||||
this(int firstFrame = FIRSTFRAME)
|
||||
this(int firstFrame)
|
||||
{
|
||||
_firstFrame = firstFrame;
|
||||
_callstack = getBacktrace();
|
||||
|
|
Loading…
Reference in New Issue