/js/src/jit-test/tests/jaeger/testSetElem-Indexed.js

http://github.com/zpao/v8monkey · JavaScript · 36 lines · 21 code · 10 blank · 5 comment · 0 complexity · db2c94f7989d6a1c886f8910b0bb00b7 MD5 · raw file

  1. // vim: set ts=4 sw=4 tw=99 et:
  2. function f() {
  3. return [[], [], [], []];
  4. }
  5. function setelem(obj, key, val) {
  6. obj[key] = val;
  7. }
  8. // Generate IC
  9. setelem([], 0, "hi");
  10. setelem([], 0, "hi");
  11. // Get some arrays pre-indexing.
  12. var arrays = f();
  13. // Do bad stuff.
  14. Object.defineProperty(Object.prototype, "1", { set: function (v) { this.kettle = v; } });
  15. var k = arrays[0];
  16. setelem(k, 1, 13);
  17. assertEq(k.kettle, 13);
  18. assertEq(k.hasOwnProperty("1"), false);
  19. Object.defineProperty(Array.prototype, "2", { set: function (v) { this.pot = v; } });
  20. k = arrays[1];
  21. setelem(k, 2, "yam");
  22. assertEq(k.pot, "yam");
  23. gc();
  24. // make sure this reset okay.
  25. setelem([], 0, "hi");
  26. setelem([], 0, "hi");