{"push_id":880799840,"size":4,"distinct_size":4,"ref":"refs/heads/fix-prop-assign-mutate","head":"476fd13aadd5583c5338dbc7cbc5481dbf0a3780","before":"7031fe5b014fe8d63c0f8883cc4b3ea7bbaa301f","commits":[{"sha":"94423a2f6b4b4a1879572daa33dcee2634918534","author":{"email":"9f0eef37c5d246dfd6482a1f372bdd5eae51dfe5@iki.fi","name":"Sami Vaarala"},"message":"Add testcases for base mutation during prop expr","distinct":true,"url":"https://api.github.com/repos/svaarala/duktape/commits/94423a2f6b4b4a1879572daa33dcee2634918534"},{"sha":"5b3bd0c041280ae65c82826477a6943e28400d3f","author":{"email":"9f0eef37c5d246dfd6482a1f372bdd5eae51dfe5@iki.fi","name":"Sami Vaarala"},"message":"Fix a nested property assignment mutation issue\n\nWhen evaluating foo[xxx] = 'quux', evaluation of 'xxx' may mutate the\nregister bound variable 'foo'.  So even if it seems we could safely\nassume 'foo' maps to a register (without emitting any code) we need to\ncopy it to a temporary unless we know 'xxx' doesn't mutate it as a side\neffect.  Duktape doesn't currently have the compiler state to do such a\ncheck so we must assume the worst.  Even with a compiler internal\nrepresentation it's difficult to prove 'xxx' is safe if it involves any\nside effects; e.g. foo[bar.quux] = 'quux' is potentially unsafe because\n'bar.quux' may be an accessor and write to 'foo'.","distinct":true,"url":"https://api.github.com/repos/svaarala/duktape/commits/5b3bd0c041280ae65c82826477a6943e28400d3f"},{"sha":"f6868e5e12d215bfdc21a26e870a50b10ddba32e","author":{"email":"9f0eef37c5d246dfd6482a1f372bdd5eae51dfe5@iki.fi","name":"Sami Vaarala"},"message":"Perf tests for prop RHS/LHS in assignment","distinct":true,"url":"https://api.github.com/repos/svaarala/duktape/commits/f6868e5e12d215bfdc21a26e870a50b10ddba32e"},{"sha":"476fd13aadd5583c5338dbc7cbc5481dbf0a3780","author":{"email":"9f0eef37c5d246dfd6482a1f372bdd5eae51dfe5@iki.fi","name":"Sami Vaarala"},"message":"Releases: property assign base mutation","distinct":true,"url":"https://api.github.com/repos/svaarala/duktape/commits/476fd13aadd5583c5338dbc7cbc5481dbf0a3780"}]}