diff -r 000000000000 -r 6474c204b198 js/src/jscrashreport.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/jscrashreport.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * vim: set ts=8 sts=4 et sw=4 tw=99: + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef jscrashreport_h +#define jscrashreport_h + +#include "mozilla/GuardObjects.h" + +#include + +namespace js { +namespace crash { + +void +SnapshotGCStack(); + +void +SnapshotErrorStack(); + +void +SaveCrashData(uint64_t tag, void *ptr, size_t size); + +template +class StackBuffer +{ + public: + StackBuffer(void *data + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; + + buffer[0] = marker; + buffer[1] = '['; + + for (size_t i = 0; i < size; i++) { + if (data) + buffer[i + 2] = static_cast(data)[i]; + else + buffer[i + 2] = 0; + } + + buffer[size - 2] = ']'; + buffer[size - 1] = marker; + } + + private: + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER + volatile unsigned char buffer[size + 4]; +}; + +} /* namespace crash */ +} /* namespace js */ + +#endif /* jscrashreport_h */