summaryrefslogtreecommitdiff
path: root/deps/v8/src/source-position-table.h
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2016-09-06 22:49:51 +0200
committerMichaël Zasso <targos@protonmail.com>2016-09-22 09:51:19 +0200
commitec02b811a8a5c999bab4de312be2d732b7d9d50b (patch)
treeca3068017254f238cf413a451c57a803572983a4 /deps/v8/src/source-position-table.h
parentd2eb7ce0105369a9cad82787cb33a665e9bd00ad (diff)
downloadandroid-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.h90
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_