CpuProfiler: replace raw position with SourcePosition for DeoptReason
authorloislo <loislo@chromium.org>
Fri, 27 Feb 2015 13:34:23 +0000 (05:34 -0800)
committerCommit bot <commit-bot@chromium.org>
Fri, 27 Feb 2015 13:34:38 +0000 (13:34 +0000)
Save Unknown position as zero in RelocInfo.
Remove copy constructor of SourcePosition because it is trivial.
Mechanical replace int raw_position with SourcePosition position.

BUG=452067
LOG=n

Review URL: https://codereview.chromium.org/959203002

Cr-Commit-Position: refs/heads/master@{#26916}

29 files changed:
src/arm/assembler-arm.h
src/arm/lithium-codegen-arm.cc
src/arm64/assembler-arm64.h
src/arm64/lithium-codegen-arm64.cc
src/assembler.cc
src/compiler.h
src/cpu-profiler-inl.h
src/cpu-profiler.cc
src/cpu-profiler.h
src/deoptimizer.cc
src/deoptimizer.h
src/hydrogen-instructions.h
src/ia32/assembler-ia32.h
src/ia32/lithium-codegen-ia32.cc
src/lithium-codegen.cc
src/mips/assembler-mips.h
src/mips/lithium-codegen-mips.cc
src/mips64/assembler-mips64.h
src/mips64/lithium-codegen-mips64.cc
src/objects.cc
src/ppc/assembler-ppc.h
src/ppc/lithium-codegen-ppc.cc
src/profile-generator-inl.h
src/profile-generator.cc
src/profile-generator.h
src/x64/assembler-x64.h
src/x64/lithium-codegen-x64.cc
src/x87/assembler-x87.h
src/x87/lithium-codegen-x87.cc

index 7d1e0bd..721b0bc 100644 (file)
@@ -45,6 +45,7 @@
 
 #include "src/arm/constants-arm.h"
 #include "src/assembler.h"
+#include "src/compiler.h"
 #include "src/serialize.h"
 
 namespace v8 {
@@ -1400,7 +1401,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
   // Record the emission of a constant pool.
   //
index 201120a..aa9bfc7 100644 (file)
@@ -894,7 +894,7 @@ void LCodeGen::DeoptimizeIf(Condition condition, LInstruction* instr,
     __ stop("trap_on_deopt", condition);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   // Go through jump table if we need to handle condition, build frame, or
index 9968985..16d0270 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "src/arm64/instructions-arm64.h"
 #include "src/assembler.h"
+#include "src/compiler.h"
 #include "src/globals.h"
 #include "src/serialize.h"
 #include "src/utils.h"
@@ -1010,7 +1011,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
   int buffer_space() const;
 
index 5926013..ddc8731 100644 (file)
@@ -1058,7 +1058,7 @@ void LCodeGen::DeoptimizeBranch(
     __ Bind(&dont_trap);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   // Go through jump table if we need to build frame, or restore caller doubles.
index f4299ed..86d4b11 100644 (file)
@@ -465,7 +465,7 @@ void RelocInfoWriter::Write(const RelocInfo* rinfo) {
     DCHECK(begin_pos - pos_ <= RelocInfo::kMaxCallSize);
   } else if (rmode == RelocInfo::CODE_TARGET_WITH_ID) {
     // Use signed delta-encoding for id.
-    DCHECK(static_cast<int>(rinfo->data()) == rinfo->data());
+    DCHECK_EQ(static_cast<int>(rinfo->data()), rinfo->data());
     int id_delta = static_cast<int>(rinfo->data()) - last_id_;
     // Check if delta is small enough to fit in a tagged byte.
     if (is_intn(id_delta, kSmallDataBits)) {
@@ -483,12 +483,12 @@ void RelocInfoWriter::Write(const RelocInfo* rinfo) {
     WriteTaggedData(rinfo->data(), kDeoptReasonTag);
   } else if (RelocInfo::IsPosition(rmode)) {
     // Use signed delta-encoding for position.
-    DCHECK(static_cast<int>(rinfo->data()) == rinfo->data());
+    DCHECK_EQ(static_cast<int>(rinfo->data()), rinfo->data());
     int pos_delta = static_cast<int>(rinfo->data()) - last_position_;
     if (rmode == RelocInfo::STATEMENT_POSITION) {
       WritePosition(pc_delta, pos_delta, rmode);
     } else {
-      DCHECK(rmode == RelocInfo::POSITION);
+      DCHECK_EQ(rmode, RelocInfo::POSITION);
       if (pc_delta != 0 || last_mode_ != RelocInfo::POSITION) {
         FlushPosition();
         next_position_candidate_pc_delta_ = pc_delta;
@@ -1656,9 +1656,11 @@ bool PositionsRecorder::WriteRecordedPositions() {
 // Platform specific but identical code for all the platforms.
 
 
-void Assembler::RecordDeoptReason(const int reason, const int raw_position) {
+void Assembler::RecordDeoptReason(const int reason,
+                                  const SourcePosition position) {
   if (FLAG_trace_deopt || isolate()->cpu_profiler()->is_profiling()) {
     EnsureSpace ensure_space(this);
+    int raw_position = position.IsUnknown() ? 0 : position.raw();
     RecordRelocInfo(RelocInfo::POSITION, raw_position);
     RecordRelocInfo(RelocInfo::DEOPT_REASON, reason);
   }
index 8ef2e0a..5932583 100644 (file)
@@ -39,9 +39,9 @@ struct OffsetRange {
 // script start.
 class SourcePosition {
  public:
-  SourcePosition(const SourcePosition& other) : value_(other.value_) {}
-
-  static SourcePosition Unknown() { return SourcePosition(kNoPosition); }
+  static SourcePosition Unknown() {
+    return SourcePosition::FromRaw(kNoPosition);
+  }
 
   bool IsUnknown() const { return value_ == kNoPosition; }
 
@@ -72,10 +72,14 @@ class SourcePosition {
   // Offset from the start of the inlined function.
   typedef BitField<uint32_t, 9, 23> PositionField;
 
-  explicit SourcePosition(uint32_t value) : value_(value) {}
-
   friend class HPositionInfo;
-  friend class LCodeGenBase;
+  friend class Deoptimizer;
+
+  static SourcePosition FromRaw(uint32_t raw_position) {
+    SourcePosition position;
+    position.value_ = raw_position;
+    return position;
+  }
 
   // If FLAG_hydrogen_track_positions is set contains bitfields InliningIdField
   // and PositionField.
index dfed578..12f57c2 100644 (file)
@@ -35,7 +35,7 @@ void CodeDisableOptEventRecord::UpdateCodeMap(CodeMap* code_map) {
 
 void CodeDeoptEventRecord::UpdateCodeMap(CodeMap* code_map) {
   CodeEntry* entry = code_map->FindEntry(start);
-  if (entry != NULL) entry->set_deopt_info(deopt_reason, raw_position);
+  if (entry != NULL) entry->set_deopt_info(deopt_reason, position);
 }
 
 
index 62a9411..06640b4 100644 (file)
@@ -336,7 +336,7 @@ void CpuProfiler::CodeDeoptEvent(Code* code, int bailout_id, Address pc,
   Deoptimizer::DeoptInfo info = Deoptimizer::GetDeoptInfo(code, bailout_id);
   rec->start = code->address();
   rec->deopt_reason = Deoptimizer::GetDeoptReason(info.deopt_reason);
-  rec->raw_position = info.raw_position;
+  rec->position = info.position;
   processor_->Enqueue(evt_rec);
   processor_->AddDeoptStack(isolate_, pc, fp_to_sp_delta);
 }
index d8341d8..49611f3 100644 (file)
@@ -9,6 +9,7 @@
 #include "src/base/atomicops.h"
 #include "src/base/platform/time.h"
 #include "src/circular-queue.h"
+#include "src/compiler.h"
 #include "src/sampler.h"
 #include "src/unbound-queue.h"
 
@@ -78,7 +79,7 @@ class CodeDeoptEventRecord : public CodeEventRecord {
  public:
   Address start;
   const char* deopt_reason;
-  int raw_position;
+  SourcePosition position;
 
   INLINE(void UpdateCodeMap(CodeMap* code_map));
 };
index 05d3953..d45ca22 100644 (file)
@@ -3650,7 +3650,7 @@ const char* Deoptimizer::GetDeoptReason(DeoptReason deopt_reason) {
 
 
 Deoptimizer::DeoptInfo Deoptimizer::GetDeoptInfo(Code* code, int bailout_id) {
-  int last_position = 0;
+  SourcePosition last_position = SourcePosition::Unknown();
   Isolate* isolate = code->GetIsolate();
   Deoptimizer::DeoptReason last_reason = Deoptimizer::kNoReason;
   int mask = RelocInfo::ModeMask(RelocInfo::DEOPT_REASON) |
@@ -3659,7 +3659,9 @@ Deoptimizer::DeoptInfo Deoptimizer::GetDeoptInfo(Code* code, int bailout_id) {
   for (RelocIterator it(code, mask); !it.done(); it.next()) {
     RelocInfo* info = it.rinfo();
     if (info->rmode() == RelocInfo::POSITION) {
-      last_position = static_cast<int>(info->data());
+      int raw_position = static_cast<int>(info->data());
+      last_position = raw_position ? SourcePosition::FromRaw(raw_position)
+                                   : SourcePosition::Unknown();
     } else if (info->rmode() == RelocInfo::DEOPT_REASON) {
       last_reason = static_cast<Deoptimizer::DeoptReason>(info->data());
     } else if (last_reason != Deoptimizer::kNoReason) {
@@ -3677,6 +3679,6 @@ Deoptimizer::DeoptInfo Deoptimizer::GetDeoptInfo(Code* code, int bailout_id) {
       }
     }
   }
-  return DeoptInfo(0, NULL, Deoptimizer::kNoReason);
+  return DeoptInfo(SourcePosition::Unknown(), NULL, Deoptimizer::kNoReason);
 }
 } }  // namespace v8::internal
index 471a05d..501164f 100644 (file)
@@ -184,10 +184,10 @@ class Deoptimizer : public Malloced {
   static const char* GetDeoptReason(DeoptReason deopt_reason);
 
   struct DeoptInfo {
-    DeoptInfo(int r, const char* m, DeoptReason d)
-        : raw_position(r), mnemonic(m), deopt_reason(d) {}
+    DeoptInfo(SourcePosition position, const char* m, DeoptReason d)
+        : position(position), mnemonic(m), deopt_reason(d) {}
 
-    int raw_position;
+    SourcePosition position;
     const char* mnemonic;
     DeoptReason deopt_reason;
   };
index a9eb57d..c6e8a58 100644 (file)
@@ -982,7 +982,7 @@ class HPositionInfo {
     if (has_operand_positions()) {
       return operand_positions()[kInstructionPosIndex];
     }
-    return SourcePosition(static_cast<int>(UntagPosition(data_)));
+    return SourcePosition::FromRaw(static_cast<int>(UntagPosition(data_)));
   }
 
   void set_position(SourcePosition pos) {
index a17b539..ea5a7e2 100644 (file)
@@ -40,6 +40,7 @@
 #include <deque>
 
 #include "src/assembler.h"
+#include "src/compiler.h"
 #include "src/isolate.h"
 #include "src/serialize.h"
 
@@ -1266,7 +1267,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
   // Writes a single byte or word of data in the code stream.  Used for
   // inline tables, e.g., jump-tables.
index 53888c0..8705af7 100644 (file)
@@ -862,7 +862,7 @@ void LCodeGen::DeoptimizeIf(Condition cc, LInstruction* instr,
     __ bind(&done);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   if (cc == no_condition && frame_is_built_) {
index 242db22..ea409b2 100644 (file)
@@ -153,7 +153,7 @@ void LCodeGenBase::Comment(const char* format, ...) {
 
 
 void LCodeGenBase::DeoptComment(const Deoptimizer::DeoptInfo& deopt_info) {
-  masm()->RecordDeoptReason(deopt_info.deopt_reason, deopt_info.raw_position);
+  masm()->RecordDeoptReason(deopt_info.deopt_reason, deopt_info.position);
 }
 
 
index 585cf5e..2963112 100644 (file)
@@ -41,6 +41,7 @@
 #include <set>
 
 #include "src/assembler.h"
+#include "src/compiler.h"
 #include "src/mips/constants-mips.h"
 #include "src/serialize.h"
 
@@ -1020,7 +1021,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
 
   static int RelocateInternalReference(RelocInfo::Mode rmode, byte* pc,
index dbf5416..ac7c741 100644 (file)
@@ -857,7 +857,7 @@ void LCodeGen::DeoptimizeIf(Condition condition, LInstruction* instr,
     __ bind(&skip);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   // Go through jump table if we need to handle condition, build frame, or
index a550ef2..43f7b02 100644 (file)
@@ -1060,7 +1060,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
   static int RelocateInternalReference(RelocInfo::Mode rmode, byte* pc,
                                        intptr_t pc_delta);
index fe907b6..f392e6f 100644 (file)
@@ -807,7 +807,7 @@ void LCodeGen::DeoptimizeIf(Condition condition, LInstruction* instr,
     __ bind(&skip);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   // Go through jump table if we need to handle condition, build frame, or
index 6fd9503..3895aec 100644 (file)
@@ -15,6 +15,7 @@
 #include "src/bootstrapper.h"
 #include "src/code-stubs.h"
 #include "src/codegen.h"
+#include "src/compiler.h"
 #include "src/cpu-profiler.h"
 #include "src/date.h"
 #include "src/debug.h"
@@ -11264,9 +11265,16 @@ Code* Code::GetCodeAgeStub(Isolate* isolate, Age age, MarkingParity parity) {
 
 void Code::PrintDeoptLocation(FILE* out, int bailout_id) {
   Deoptimizer::DeoptInfo info = Deoptimizer::GetDeoptInfo(this, bailout_id);
-  if (info.deopt_reason != Deoptimizer::kNoReason || info.raw_position != 0) {
-    PrintF(out, "            ;;; deoptimize at %d: %s\n", info.raw_position,
-           Deoptimizer::GetDeoptReason(info.deopt_reason));
+  class SourcePosition pos = info.position;
+  if (info.deopt_reason != Deoptimizer::kNoReason || !pos.IsUnknown()) {
+    if (FLAG_hydrogen_track_positions) {
+      PrintF(out, "            ;;; deoptimize at %d_%d: %s\n",
+             pos.inlining_id(), pos.position(),
+             Deoptimizer::GetDeoptReason(info.deopt_reason));
+    } else {
+      PrintF(out, "            ;;; deoptimize at %d: %s\n", pos.raw(),
+             Deoptimizer::GetDeoptReason(info.deopt_reason));
+    }
   }
 }
 
index 672b928..7d52c74 100644 (file)
@@ -44,6 +44,7 @@
 #include <vector>
 
 #include "src/assembler.h"
+#include "src/compiler.h"
 #include "src/ppc/constants-ppc.h"
 #include "src/serialize.h"
 
@@ -1302,7 +1303,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
   // Writes a single byte or word of data in the code stream.  Used
   // for inline tables, e.g., jump-tables.
index 06a9397..93aae29 100644 (file)
@@ -813,7 +813,7 @@ void LCodeGen::DeoptimizeIf(Condition cond, LInstruction* instr,
     __ stop("trap_on_deopt", cond, kDefaultStopCode, cr);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   // Go through jump table if we need to handle condition, build frame, or
index d6d38e3..1e543dd 100644 (file)
@@ -26,7 +26,7 @@ CodeEntry::CodeEntry(Logger::LogEventsAndTags tag, const char* name,
       no_frame_ranges_(NULL),
       bailout_reason_(kEmptyBailoutReason),
       deopt_reason_(kNoDeoptReason),
-      deopt_location_(0),
+      deopt_position_(SourcePosition::Unknown()),
       line_info_(line_info),
       instruction_start_(instruction_start) {}
 
index 656da1e..d030b68 100644 (file)
@@ -113,7 +113,7 @@ void CodeEntry::FillFunctionInfo(SharedFunctionInfo* shared) {
 
 
 void ProfileNode::CollectDeoptInfo(CodeEntry* entry) {
-  deopt_infos_.Add(DeoptInfo(entry->deopt_reason(), entry->deopt_location()));
+  deopt_infos_.Add(DeoptInfo(entry->deopt_reason(), entry->deopt_position()));
   entry->clear_deopt_info();
 }
 
@@ -182,8 +182,14 @@ void ProfileNode::Print(int indent) {
     base::OS::Print(" %s:%d", entry_->resource_name(), entry_->line_number());
   base::OS::Print("\n");
   for (auto info : deopt_infos_) {
-    base::OS::Print("%*s deopted at %d with reason '%s'\n", indent + 10, "",
-                    info.deopt_location, info.deopt_reason);
+    if (FLAG_hydrogen_track_positions) {
+      base::OS::Print("%*s deopted at %d_%d with reason '%s'\n", indent + 10,
+                      "", info.deopt_position.inlining_id(),
+                      info.deopt_position.position(), info.deopt_reason);
+    } else {
+      base::OS::Print("%*s deopted at %d with reason '%s'\n", indent + 10, "",
+                      info.deopt_position.raw(), info.deopt_reason);
+    }
   }
   const char* bailout_reason = entry_->bailout_reason();
   if (bailout_reason != GetBailoutReason(BailoutReason::kNoReason) &&
index 08e4afd..7ea168b 100644 (file)
@@ -8,6 +8,7 @@
 #include <map>
 #include "include/v8-profiler.h"
 #include "src/allocation.h"
+#include "src/compiler.h"
 #include "src/hashmap.h"
 #include "src/strings-storage.h"
 
@@ -64,17 +65,17 @@ class CodeEntry {
   }
   const char* bailout_reason() const { return bailout_reason_; }
 
-  void set_deopt_info(const char* deopt_reason, int location) {
-    DCHECK(!deopt_location_);
+  void set_deopt_info(const char* deopt_reason, SourcePosition position) {
+    DCHECK(deopt_position_.IsUnknown());
     deopt_reason_ = deopt_reason;
-    deopt_location_ = location;
+    deopt_position_ = position;
   }
   const char* deopt_reason() const { return deopt_reason_; }
-  int deopt_location() const { return deopt_location_; }
-  bool has_deopt_info() const { return deopt_location_; }
+  SourcePosition deopt_position() const { return deopt_position_; }
+  bool has_deopt_info() const { return !deopt_position_.IsUnknown(); }
   void clear_deopt_info() {
     deopt_reason_ = kNoDeoptReason;
-    deopt_location_ = 0;
+    deopt_position_ = SourcePosition::Unknown();
   }
 
   void FillFunctionInfo(SharedFunctionInfo* shared);
@@ -119,7 +120,7 @@ class CodeEntry {
   List<OffsetRange>* no_frame_ranges_;
   const char* bailout_reason_;
   const char* deopt_reason_;
-  int deopt_location_;
+  SourcePosition deopt_position_;
   JITLineInfoTable* line_info_;
   Address instruction_start_;
 
@@ -132,13 +133,13 @@ class ProfileTree;
 class ProfileNode {
  private:
   struct DeoptInfo {
-    DeoptInfo(const char* deopt_reason, int deopt_location)
-        : deopt_reason(deopt_reason), deopt_location(deopt_location) {}
+    DeoptInfo(const char* deopt_reason, SourcePosition deopt_position)
+        : deopt_reason(deopt_reason), deopt_position(deopt_position) {}
     DeoptInfo(const DeoptInfo& info)
         : deopt_reason(info.deopt_reason),
-          deopt_location(info.deopt_location) {}
+          deopt_position(info.deopt_position) {}
     const char* deopt_reason;
-    int deopt_location;
+    SourcePosition deopt_position;
   };
 
  public:
index 08a23d6..96715d1 100644 (file)
@@ -40,6 +40,7 @@
 #include <deque>
 
 #include "src/assembler.h"
+#include "src/compiler.h"
 #include "src/serialize.h"
 
 namespace v8 {
@@ -1341,7 +1342,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
   // Allocate a constant pool of the correct size for the generated code.
   Handle<ConstantPoolArray> NewConstantPool(Isolate* isolate);
index 33fc465..6dde8a3 100644 (file)
@@ -769,7 +769,7 @@ void LCodeGen::DeoptimizeIf(Condition cc, LInstruction* instr,
     __ bind(&done);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   // Go through jump table if we need to handle condition, build frame, or
index 0535964..2fb46e1 100644 (file)
@@ -40,6 +40,7 @@
 #include <deque>
 
 #include "src/assembler.h"
+#include "src/compiler.h"
 #include "src/isolate.h"
 #include "src/serialize.h"
 
@@ -941,7 +942,7 @@ class Assembler : public AssemblerBase {
 
   // Record a deoptimization reason that can be used by a log or cpu profiler.
   // Use --trace-deopt to enable.
-  void RecordDeoptReason(const int reason, const int raw_position);
+  void RecordDeoptReason(const int reason, const SourcePosition position);
 
   // Writes a single byte or word of data in the code stream.  Used for
   // inline tables, e.g., jump-tables.
index 4c2a15a..8fd8f5b 100644 (file)
@@ -1144,7 +1144,7 @@ void LCodeGen::DeoptimizeIf(Condition cc, LInstruction* instr,
     __ bind(&done);
   }
 
-  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position().raw(),
+  Deoptimizer::DeoptInfo deopt_info(instr->hydrogen_value()->position(),
                                     instr->Mnemonic(), deopt_reason);
   DCHECK(info()->IsStub() || frame_is_built_);
   if (cc == no_condition && frame_is_built_) {