16d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org// Copyright 2011 the V8 project authors. All rights reserved.
20040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// Redistribution and use in source and binary forms, with or without
30040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// modification, are permitted provided that the following conditions are
40040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// met:
50040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//
60040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//     * Redistributions of source code must retain the above copyright
70040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//       notice, this list of conditions and the following disclaimer.
80040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//     * Redistributions in binary form must reproduce the above
90040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//       copyright notice, this list of conditions and the following
100040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//       disclaimer in the documentation and/or other materials provided
110040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//       with the distribution.
120040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//     * Neither the name of Google Inc. nor the names of its
130040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//       contributors may be used to endorse or promote products derived
140040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//       from this software without specific prior written permission.
150040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org//
160040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
170040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
180040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
190040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
200040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
210040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
220040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
230040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
240040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
250040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
260040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
270040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
280040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org#ifndef V8_PREPARSE_DATA_FORMAT_H_
290040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org#define V8_PREPARSE_DATA_FORMAT_H_
300040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
310040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.orgnamespace v8 {
320040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.orgnamespace internal {
330040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
340040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org// Generic and general data used by preparse data recorders and readers.
350040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
360040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.orgstruct PreparseDataConstants {
370040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org public:
380040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  // Layout and constants of the preparse data exchange format.
390040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const unsigned kMagicNumber = 0xBadDead;
406d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org  static const unsigned kCurrentVersion = 7;
410040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
420040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kMagicOffset = 0;
430040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kVersionOffset = 1;
440040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kHasErrorOffset = 2;
450040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kFunctionsSizeOffset = 3;
460040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kSymbolCountOffset = 4;
470040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kSizeOffset = 5;
480040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kHeaderSize = 6;
490040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
500040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  // If encoding a message, the following positions are fixed.
510040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kMessageStartPos = 0;
520040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kMessageEndPos = 1;
530040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kMessageArgCountPos = 2;
540040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const int kMessageTextPos = 3;
550040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
560040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org  static const unsigned char kNumberTerminator = 0x80u;
570040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org};
580040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
590040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
600040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org} }  // namespace v8::internal.
610040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org
620040ca93e7ca9c0968f7bc27088ce045cb32c402lrn@chromium.org#endif  // V8_PREPARSE_DATA_FORMAT_H_
63