diff options
author | Michaël Zasso <targos@protonmail.com> | 2016-09-06 22:49:51 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2016-09-22 09:51:19 +0200 |
commit | ec02b811a8a5c999bab4de312be2d732b7d9d50b (patch) | |
tree | ca3068017254f238cf413a451c57a803572983a4 /deps/v8/src/source-position-table.h | |
parent | d2eb7ce0105369a9cad82787cb33a665e9bd00ad (diff) | |
download | android-node-v8-ec02b811a8a5c999bab4de312be2d732b7d9d50b.tar.gz android-node-v8-ec02b811a8a5c999bab4de312be2d732b7d9d50b.tar.bz2 android-node-v8-ec02b811a8a5c999bab4de312be2d732b7d9d50b.zip |
deps: update V8 to 5.4.500.27
Pick up latest commit from the 5.4-lkgr branch.
deps: edit V8 gitignore to allow trace event copy
deps: update V8 trace event to 315bf1e2d45be7d53346c31cfcc37424a32c30c8
deps: edit V8 gitignore to allow gtest_prod.h copy
deps: update V8 gtest to 6f8a66431cb592dad629028a50b3dd418a408c87
PR-URL: https://github.com/nodejs/node/pull/8317
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'deps/v8/src/source-position-table.h')
-rw-r--r-- | deps/v8/src/source-position-table.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/deps/v8/src/source-position-table.h b/deps/v8/src/source-position-table.h new file mode 100644 index 0000000000..76ae4a0759 --- /dev/null +++ b/deps/v8/src/source-position-table.h @@ -0,0 +1,90 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef V8_SOURCE_POSITION_TABLE_H_ +#define V8_SOURCE_POSITION_TABLE_H_ + +#include "src/assert-scope.h" +#include "src/checks.h" +#include "src/handles.h" +#include "src/zone-containers.h" + +namespace v8 { +namespace internal { + +class AbstractCode; +class BytecodeArray; +class ByteArray; +class Isolate; +class Zone; + +struct PositionTableEntry { + PositionTableEntry() + : code_offset(0), source_position(0), is_statement(false) {} + PositionTableEntry(int offset, int source, bool statement) + : code_offset(offset), source_position(source), is_statement(statement) {} + + int code_offset; + int source_position; + bool is_statement; +}; + +class SourcePositionTableBuilder { + public: + enum RecordingMode { OMIT_SOURCE_POSITIONS, RECORD_SOURCE_POSITIONS }; + + SourcePositionTableBuilder(Zone* zone, + RecordingMode mode = RECORD_SOURCE_POSITIONS); + + void AddPosition(size_t code_offset, int source_position, bool is_statement); + + Handle<ByteArray> ToSourcePositionTable(Isolate* isolate, + Handle<AbstractCode> code); + + private: + void AddEntry(const PositionTableEntry& entry); + + inline bool Omit() const { return mode_ == OMIT_SOURCE_POSITIONS; } + + RecordingMode mode_; + ZoneVector<byte> bytes_; +#ifdef ENABLE_SLOW_DCHECKS + ZoneVector<PositionTableEntry> raw_entries_; +#endif + PositionTableEntry previous_; // Previously written entry, to compute delta. +}; + +class SourcePositionTableIterator { + public: + explicit SourcePositionTableIterator(ByteArray* byte_array); + + void Advance(); + + int code_offset() const { + DCHECK(!done()); + return current_.code_offset; + } + int source_position() const { + DCHECK(!done()); + return current_.source_position; + } + bool is_statement() const { + DCHECK(!done()); + return current_.is_statement; + } + bool done() const { return index_ == kDone; } + + private: + static const int kDone = -1; + + ByteArray* table_; + int index_; + PositionTableEntry current_; + DisallowHeapAllocation no_gc; +}; + +} // namespace internal +} // namespace v8 + +#endif // V8_SOURCE_POSITION_TABLE_H_ |