<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 30, 2014 at 10:18 AM, raul mihaila <span dir="ltr"><<a href="mailto:raul.mihaila@gmail.com" target="_blank">raul.mihaila@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">While reading the SetPrototypeOf algorithm I noticed that some steps are repeated. At step 5, if O.[[Extensible]] is false, the method returns false. But at step 8, the same condition is checked again. It seems to me that between these steps neither the value of O, nor the value of O.[[Extensible]] changes. Aren't steps 7 and 8 redundant?</div>
</blockquote><div><br></div><div>The second set of checks is needed because step 6 might change the results: if one of the objects iterated over in step 6 is a proxy, then arbitrary code can be executed through an invocation of its `getPrototypeOf` handler. This code might make O inextensible or change its __proto__ to be the same value as V.<br>
</div></div></div></div>