Please review JDK-8159589: ScriptObjectMirror.clear() should remove all 
enumerable properties:

Bug: https://bugs.openjdk.java.net/browse/JDK-8159589
Webrev: http://cr.openjdk.java.net/~hannesw/8159589/webrev.00/

In our current implementation, ScriptObjectMirror.clear() observes JS semantics 
by not clearing properties that are non-configurable, and even throwing type 
error when invoking clear() on an object that contains such properties.

IMO, there’s no need to follow JS semantics since we’re calling the method from 
outside of JS. With this change, clear() will remove all enumerable properties. 
This also makes the method consistent with size() and isEmpty(), which 
previously could return values > 0 and false after calling clear().

On a practical note, this is really convenient with global objects as it can be 
used to return globals to their initial state after an eval, removing all 
declared vars and functions but leaving the (non-enumerable) built-ins.

Hannes

Reply via email to