Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Unified Diff: src/compiler/source-position.h

Issue 1890803002: [wasm] Generate source position information (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@wasm-throw-error
Patch Set: some doc and fixes Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/compiler/source-position.h
diff --git a/src/compiler/source-position.h b/src/compiler/source-position.h
index 81db1d2e3eff4f97d0f93e484b83d321b8115259..a1962766b399303f2c245fa1c42ab56f77bc1feb 100644
--- a/src/compiler/source-position.h
+++ b/src/compiler/source-position.h
@@ -41,30 +41,6 @@ inline bool operator!=(const SourcePosition& lhs, const SourcePosition& rhs) {
class SourcePositionTable final {
public:
- class Scope final {
- public:
- Scope(SourcePositionTable* source_positions, SourcePosition position)
- : source_positions_(source_positions),
- prev_position_(source_positions->current_position_) {
- Init(position);
- }
- Scope(SourcePositionTable* source_positions, Node* node)
- : source_positions_(source_positions),
- prev_position_(source_positions->current_position_) {
- Init(source_positions_->GetSourcePosition(node));
- }
- ~Scope() { source_positions_->current_position_ = prev_position_; }
-
- private:
- void Init(SourcePosition position) {
- if (position.IsKnown()) source_positions_->current_position_ = position;
- }
-
- SourcePositionTable* const source_positions_;
- SourcePosition const prev_position_;
- DISALLOW_COPY_AND_ASSIGN(Scope);
- };
-
explicit SourcePositionTable(Graph* graph);
~SourcePositionTable() {
if (decorator_) RemoveDecorator();
@@ -75,10 +51,15 @@ class SourcePositionTable final {
SourcePosition GetSourcePosition(Node* node) const;
+#ifdef DEBUG
titzer 2016/04/18 11:03:51 I'm not sure why this would only be useful in debu
Clemens Hammacher 2016/04/18 11:18:09 Right now it's only used in debug mode, but sure,
+ Graph* GetGraph() const { return graph_; }
+#endif
+
void Print(std::ostream& os) const;
private:
class Decorator;
+ friend class SourcePositionScope;
Graph* const graph_;
Decorator* decorator_;
@@ -88,6 +69,38 @@ class SourcePositionTable final {
DISALLOW_COPY_AND_ASSIGN(SourcePositionTable);
};
+class SourcePositionScope final {
titzer 2016/04/18 11:03:51 I think I prefer leaving this as an inner class in
Clemens Hammacher 2016/04/18 11:18:09 If we don't need to forward-reference it from comp
+ public:
+ SourcePositionScope(SourcePositionTable* source_positions,
+ SourcePosition position = SourcePosition::Unknown())
+ : source_positions_(source_positions),
+ prev_position_(source_positions->current_position_) {
+ Init(position);
+ }
+ SourcePositionScope(SourcePositionTable* source_positions, Node* node)
+ : source_positions_(source_positions),
+ prev_position_(source_positions->current_position_) {
+ Init(source_positions_->GetSourcePosition(node));
+ }
+ ~SourcePositionScope() {
+ source_positions_->current_position_ = prev_position_;
+ }
+
+ void SetCurrentPosition(SourcePosition position) {
+ DCHECK(position.IsKnown());
+ source_positions_->current_position_ = position;
+ }
+
+ private:
+ void Init(SourcePosition position) {
+ if (position.IsKnown()) SetCurrentPosition(position);
+ }
+
+ SourcePositionTable* const source_positions_;
+ SourcePosition const prev_position_;
+ DISALLOW_COPY_AND_ASSIGN(SourcePositionScope);
+};
+
} // namespace compiler
} // namespace internal
} // namespace v8

Powered by Google App Engine
This is Rietveld 408576698