Index: src/runtime/runtime-compiler.cc |
diff --git a/src/runtime/runtime-compiler.cc b/src/runtime/runtime-compiler.cc |
index d115c35e22847276d17ea5bcc0e2c6eef015ffb1..8790da05e39a1b62b50da1d22a1c229d02c79684 100644 |
--- a/src/runtime/runtime-compiler.cc |
+++ b/src/runtime/runtime-compiler.cc |
@@ -352,59 +352,6 @@ |
} |
-// Walk up the stack expecting: |
-// - Runtime_CompileString |
-// - JSFunction callee (eval, Function constructor, etc) |
-// - call() (maybe) |
-// - apply() (maybe) |
-// - bind() (maybe) |
-// - JSFunction caller (maybe) |
-// |
-// return true if the caller has access to the callee or if an exit frame was |
-// hit, in which case allow it through, as it could have come through the api. |
-bool HasAccessToContextForCompileString(Isolate* isolate) { |
- MaybeHandle<JSFunction> callee; |
- bool exit_handled = true; |
- bool has_access = true; |
- bool done = false; |
- for (StackFrameIterator it(isolate); !it.done() && !done; it.Advance()) { |
- StackFrame* raw_frame = it.frame(); |
- if (!raw_frame->is_java_script()) { |
- if (raw_frame->is_exit()) exit_handled = false; |
- continue; |
- } |
- JavaScriptFrame* outer_frame = JavaScriptFrame::cast(raw_frame); |
- List<FrameSummary> frames(FLAG_max_inlining_levels + 1); |
- outer_frame->Summarize(&frames); |
- for (int i = frames.length() - 1; i >= 0 && !done; --i) { |
- FrameSummary& frame = frames[i]; |
- Handle<JSFunction> fun = frame.function(); |
- // Capture the callee function. |
- if (callee.is_null()) { |
- callee = fun; |
- exit_handled = true; |
- continue; |
- } |
- // Exit condition. |
- Handle<JSObject> callee_global_proxy( |
- callee.ToHandleChecked()->context()->global_proxy()); |
- if (!isolate->MayAccess(handle(fun->context()), callee_global_proxy)) { |
- has_access = false; |
- done = true; |
- continue; |
- } |
- // Skip bound functions in correct origin. |
- if (fun->shared()->bound()) { |
- exit_handled = true; |
- continue; |
- } |
- done = true; |
- } |
- } |
- return !exit_handled || has_access; |
-} |
- |
- |
RUNTIME_FUNCTION(Runtime_CompileString) { |
HandleScope scope(isolate); |
DCHECK(args.length() == 2); |
@@ -413,11 +360,6 @@ |
// Extract native context. |
Handle<Context> context(isolate->native_context()); |
- |
- // Filter cross security context calls. |
- if (!HasAccessToContextForCompileString(isolate)) { |
- return isolate->heap()->undefined_value(); |
- } |
// Check if native context allows code generation from |
// strings. Throw an exception if it doesn't. |