Index: src/builtins.cc |
diff --git a/src/builtins.cc b/src/builtins.cc |
index 760bb8e786b38e4c88809900efded5238c72d60f..a7d5aea37c3ac7a1370f1506fdca76ca49cc4ec2 100644 |
--- a/src/builtins.cc |
+++ b/src/builtins.cc |
@@ -2067,11 +2067,22 @@ MaybeHandle<JSFunction> CompileString(Handle<Context> context, |
} |
// Compile source string in the native context. |
- Handle<SharedFunctionInfo> outer_info(native_context->closure()->shared(), |
- isolate); |
+ StackTraceFrameIterator it(isolate); |
+ int eval_scope_position = 0; |
+ int eval_position = RelocInfo::kNoPosition; |
+ Handle<SharedFunctionInfo> outer_info; |
+ if (!it.done() && it.is_javascript()) { |
+ FrameSummary summary = FrameSummary::GetFirst(it.javascript_frame()); |
+ eval_position = |
+ summary.abstract_code()->SourcePosition(summary.code_offset()); |
+ outer_info = Handle<SharedFunctionInfo>(summary.function()->shared()); |
+ } else { |
+ outer_info = |
+ Handle<SharedFunctionInfo>(native_context->closure()->shared()); |
+ } |
return Compiler::GetFunctionFromEval(source, outer_info, native_context, |
- SLOPPY, restriction, |
- RelocInfo::kNoPosition); |
+ SLOPPY, restriction, eval_scope_position, |
+ eval_position); |
} |
} // namespace |