code) const; std::vector InliningStack( OptimizedCompilationInfo* cinfo) const; void Print(std::ostream& out, Code* code) const; void PrintJson(std::ostream& out) const; int ScriptOffset() const { return ScriptOffsetField::decode(value_) - 1; } int InliningId() const { return InliningIdField::decode(value_) - 1; } void SetScriptOffset(int script_offset) { DCHECK(script_offset <= ScriptOffsetField::kMax - 2); DCHECK_GE(script_offset, kNoSourcePosition); value_ = ScriptOffsetField::update(value_, script_offset + 1); } void SetInliningId(int inlining_id) { DCHECK(inlining_id <= InliningIdField::kMax - 2); DCHECK_GE(inlining_id, kNotInlined); value_ = InliningIdField::update(value_, inlining_id + 1); } static const int kNotInlined = -1; STATIC_ASSERT(kNoSourcePosition == -1); int64_t raw() const { return static_cast(value_); } static SourcePosition FromRaw(int64_t raw) { SourcePosition position = Unknown(); DCHECK_GE(raw, 0); position.value_ = static_cast(raw); return position; } private: void Print(std::ostream& out, SharedFunctionInfo* function) const; // InliningId is in the high bits for better compression in // SourcePositionTable. typedef BitField64 ScriptOffsetField; typedef BitField64 InliningIdField; // Leaving the highest bit untouched to allow for signed conversion. uint64_t value_; }; inline bool operator==(const SourcePosition& lhs, const SourcePosition& rhs) { return lhs.raw() == rhs.raw(); } inline bool operator!=(const SourcePosition& lhs, const SourcePosition& rhs) { return !(lhs == rhs); } struct InliningPosition { // position of the inlined call SourcePosition position = SourcePosition::Unknown(); // references position in DeoptimizationData::literals() int inlined_function_id; }; struct SourcePositionInfo { SourcePositionInfo(SourcePosition pos, Handle f); SourcePosition position; Handle 登录后可以享受更多权益 您还没有登录,登录后您可以: 收藏Android系统代码 收藏喜欢的文章 多个平台共享账号 去登录 首次使用?从这里 注册
您还没有登录,登录后您可以:
首次使用?从这里 注册