Index: runtime/lib/mirrors.cc |
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc |
index 7fb8fd01a7a5afcdf9bf57686e15dd3e3d66185c..c4605cf2e031c2a80bbda8d1c550c8849210cb50 100644 |
--- a/runtime/lib/mirrors.cc |
+++ b/runtime/lib/mirrors.cc |
@@ -1238,6 +1238,17 @@ DEFINE_NATIVE_ENTRY(Mirrors_evalInLibraryWithPrivateKey, 2) { |
Exceptions::PropagateError(Error::Cast(result)); |
UNREACHABLE(); |
} |
+ |
+ // Because we currently only use this native for building field extractors and |
+ // setters, assume the result is a closure and mark its function as invisible, |
+ // so it will not appear in stack traces. Whenever we support |
+ // ObjectMirror.evaluate this will need to be separated. |
+ ASSERT(Instance::Cast(result).IsClosure()); |
+ const Function& func = |
+ Function::Handle(Closure::function(Instance::Cast(result))); |
+ func.set_is_visible(false); |
+ func.set_is_debuggable(false); |
+ |
return result.raw(); |
} |