js/src/jscrashreport.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
     2  * vim: set ts=8 sts=4 et sw=4 tw=99:
     3  * This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 #ifndef jscrashreport_h
     8 #define jscrashreport_h
    10 #include "mozilla/GuardObjects.h"
    12 #include <stdint.h>
    14 namespace js {
    15 namespace crash {
    17 void
    18 SnapshotGCStack();
    20 void
    21 SnapshotErrorStack();
    23 void
    24 SaveCrashData(uint64_t tag, void *ptr, size_t size);
    26 template<size_t size, unsigned char marker>
    27 class StackBuffer
    28 {
    29   public:
    30     StackBuffer(void *data
    31                 MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
    32     {
    33         MOZ_GUARD_OBJECT_NOTIFIER_INIT;
    35         buffer[0] = marker;
    36         buffer[1] = '[';
    38         for (size_t i = 0; i < size; i++) {
    39             if (data)
    40                 buffer[i + 2] = static_cast<unsigned char*>(data)[i];
    41             else
    42                 buffer[i + 2] = 0;
    43         }
    45         buffer[size - 2] = ']';
    46         buffer[size - 1] = marker;
    47     }
    49   private:
    50     MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
    51     volatile unsigned char buffer[size + 4];
    52 };
    54 } /* namespace crash */
    55 } /* namespace js */
    57 #endif /* jscrashreport_h */

mercurial