Mercurial > people > rkennke > jdk9-shenandoah-final > nashorn
changeset 528:99e48c76d11f
8023721: Simplify eval in DebuggerSupport.
Reviewed-by: sundar, lagergren, hannesw
Contributed-by: james.laskey@oracle.com
author | jlaskey |
---|---|
date | Mon, 26 Aug 2013 15:33:40 -0300 |
parents | c19c66e661a9 |
children | 3bd077423a08 |
files | src/jdk/nashorn/internal/runtime/DebuggerSupport.java |
diffstat | 1 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk/nashorn/internal/runtime/DebuggerSupport.java Mon Aug 26 15:59:41 2013 +0200 +++ b/src/jdk/nashorn/internal/runtime/DebuggerSupport.java Mon Aug 26 15:33:40 2013 -0300 @@ -79,6 +79,27 @@ } /** + * Call eval on the current global. + * @param scope Scope to use. + * @param self Receiver to use. + * @param string String to evaluate. + * @param returnException true if exceptions are to be returned. + * @return Result of eval as string, or, an exception or null depending on returnException. + */ + static Object eval(final ScriptObject scope, final Object self, final String string, final boolean returnException) { + final ScriptObject global = Context.getGlobalTrusted(); + final ScriptObject initialScope = scope != null ? scope : global; + final Object callThis = self != null ? self : global; + final Context context = global.getContext(); + + try { + return context.eval(initialScope, string, callThis, ScriptRuntime.UNDEFINED, false); + } catch (Throwable ex) { + return returnException ? ex : null; + } + } + + /** * This method returns a bulk description of an object's properties. * @param object Script object to be displayed by the debugger. * @param all true if to include non-enumerable values. @@ -135,7 +156,7 @@ for (int i = 0; i < keys.length; i++) { final String key = keys[i]; - descs[i] = valueInfo(key, object.get(key), true, duplicates); + descs[i] = valueInfo(key, object.get(key), all, duplicates); } duplicates.remove(object); @@ -172,7 +193,7 @@ } if (valueAsObject instanceof ScriptObject && !(valueAsObject instanceof ScriptFunction)) { - final String objectString = objectAsString((ScriptObject)valueAsObject, true, duplicates); + final String objectString = objectAsString((ScriptObject)valueAsObject, all, duplicates); sb.append(objectString != null ? objectString : "{...}"); } else { sb.append(valueAsString(valueAsObject));