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

Unified Diff: src/source-position.cc

Issue 2684033007: Allow a ParseInfo without a script for %SetCode users (Closed)
Patch Set: Some comments. Created 3 years, 10 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/source-position.cc
diff --git a/src/source-position.cc b/src/source-position.cc
index ff204be73d327b2821646b77019badcff563d78d..2e51b0b141631d6a2c3e265f51f2f0ed8c4834cb 100644
--- a/src/source-position.cc
+++ b/src/source-position.cc
@@ -11,10 +11,16 @@ namespace internal {
std::ostream& operator<<(std::ostream& out, const SourcePositionInfo& pos) {
Handle<SharedFunctionInfo> function(pos.function);
- Handle<Script> script(Script::cast(function->script()));
+ String* name = nullptr;
+ if (function->script()->IsScript()) {
+ Script* script = Script::cast(function->script());
+ if (script->name()->IsString()) {
+ name = String::cast(script->name());
+ }
+ }
out << "<";
- if (script->name()->IsString()) {
- out << String::cast(script->name())->ToCString(DISALLOW_NULLS).get();
+ if (name != nullptr) {
+ out << name->ToCString(DISALLOW_NULLS).get();
} else {
out << "unknown";
}
@@ -78,10 +84,13 @@ std::vector<SourcePositionInfo> SourcePosition::InliningStack(
void SourcePosition::Print(std::ostream& out,
SharedFunctionInfo* function) const {
- Script* script = Script::cast(function->script());
- Object* source_name = script->name();
Script::PositionInfo pos;
- script->GetPositionInfo(ScriptOffset(), &pos, Script::WITH_OFFSET);
+ Object* source_name = nullptr;
+ if (function->script()->IsScript()) {
+ Script* script = Script::cast(function->script());
+ source_name = script->name();
+ script->GetPositionInfo(ScriptOffset(), &pos, Script::WITH_OFFSET);
+ }
out << "<";
if (source_name->IsString()) {
Michael Starzinger 2017/02/15 14:51:48 nit: It is kind of scary that we treat the non-Scr
mvstanton 2017/02/15 15:18:47 Indeed! Done.
out << String::cast(source_name)
@@ -117,12 +126,14 @@ void SourcePosition::Print(std::ostream& out, Code* code) const {
SourcePositionInfo::SourcePositionInfo(SourcePosition pos,
Handle<SharedFunctionInfo> f)
: position(pos), function(f) {
- Handle<Script> script(Script::cast(function->script()));
- Script::PositionInfo info;
- if (Script::GetPositionInfo(script, pos.ScriptOffset(), &info,
- Script::WITH_OFFSET)) {
- line = info.line;
- column = info.column;
+ if (function->script()->IsScript()) {
+ Handle<Script> script(Script::cast(function->script()));
+ Script::PositionInfo info;
+ if (Script::GetPositionInfo(script, pos.ScriptOffset(), &info,
+ Script::WITH_OFFSET)) {
+ line = info.line;
+ column = info.column;
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698