src/share/vm/compiler/compileLog.hpp

Fri, 03 Dec 2010 01:34:31 -0800

author
twisti
date
Fri, 03 Dec 2010 01:34:31 -0800
changeset 2350
2f644f85485d
parent 2314
f95d63e2154a
child 2497
3582bf76420e
permissions
-rw-r--r--

6961690: load oops from constant table on SPARC
Summary: oops should be loaded from the constant table of an nmethod instead of materializing them with a long code sequence.
Reviewed-by: never, kvn

     1 /*
     2  * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  *
    23  */
    25 #ifndef SHARE_VM_COMPILER_COMPILELOG_HPP
    26 #define SHARE_VM_COMPILER_COMPILELOG_HPP
    28 #include "utilities/xmlstream.hpp"
    30 class ciObject;
    31 class ciSymbol;
    33 // CompileLog
    34 //
    35 // An open stream for logging information about activities in a
    36 // compiler thread.  There is exactly one per CompilerThread,
    37 // if the +LogCompilation switch is enabled.
    38 class CompileLog : public xmlStream {
    39  private:
    40   const char*   _file;           // name of file where XML goes
    41   julong        _file_end;       // last good end of file
    42   intx          _thread_id;      // which compile thread
    44   stringStream  _context;        // optional, killable context marker
    45   char          _context_buffer[100];
    47   char*         _identities;     // array of boolean
    48   int           _identities_limit;
    49   int           _identities_capacity;
    51   CompileLog*   _next;           // static chain of all logs
    53   static CompileLog* _first;     // head of static chain
    55   void va_tag(bool push, const char* format, va_list ap);
    57  public:
    58   CompileLog(const char* file, FILE* fp, intx thread_id);
    59   ~CompileLog();
    61   intx          thread_id()                      { return _thread_id; }
    62   const char*   file()                           { return _file; }
    63   stringStream* context()                        { return &_context; }
    65   void          name(ciSymbol* s);               // name='s'
    66   void          name(symbolHandle s)             { xmlStream::name(s); }
    68   // Output an object description, return obj->ident().
    69   int           identify(ciObject* obj);
    70   void          clear_identities();
    72   // virtuals
    73   virtual void see_tag(const char* tag, bool push);
    74   virtual void pop_tag(const char* tag);
    76   // make a provisional end of log mark
    77   void mark_file_end() { _file_end = out()->count(); }
    79   // copy all logs to the given stream
    80   static void finish_log(outputStream* out);
    81   static void finish_log_on_error(outputStream* out, char *buf, int buflen);
    82 };
    84 #endif // SHARE_VM_COMPILER_COMPILELOG_HPP

mercurial