Update V8 to r5214 as required by WebKit r65072.

Change-Id: I387277a00cc0949597c0f69a8e4f2da60213c8f2
diff --git a/test/mjsunit/object-literal.js b/test/mjsunit/object-literal.js
index cc6f59d..0ad1968 100644
--- a/test/mjsunit/object-literal.js
+++ b/test/mjsunit/object-literal.js
@@ -95,11 +95,118 @@
 
 a = makeRegexpInArray();
 var b = makeRegexpInArray();
-assertTrue(a[0][0] === b[0][0]);
+assertFalse(a[0][0] === b[0][0]);
 assertFalse(a[0][1] === b[0][1]);
 
 function makeRegexpInObject() { return { a: { b: /b*/, c: {} } }; }
 a = makeRegexpInObject();
 b = makeRegexpInObject();
-assertTrue(a.a.b === b.a.b);
+assertFalse(a.a.b === b.a.b);
 assertFalse(a.a.c === b.a.c);
+
+
+// Test keywords valid as property names in initializers and dot-access.
+var keywords = [
+  "break",
+  "case",
+  "catch",
+  "const",
+  "continue",
+  "debugger",
+  "default",
+  "delete",
+  "do",
+  "else",
+  "false",
+  "finally",
+  "for",
+  "function",
+  "if",
+  "in",
+  "instanceof",
+  "native",
+  "new",
+  "null",
+  "return",
+  "switch",
+  "this",
+  "throw",
+  "true",
+  "try",
+  "typeof",
+  "var",
+  "void",
+  "while",
+  "with",
+];
+
+function testKeywordProperty(keyword) {
+  try {
+    // Sanity check that what we get is a keyword.
+    eval("var " + keyword + " = 42;");
+    assertUnreachable("Not a keyword: " + keyword);
+  } catch (e) { }
+  
+  // Simple property, read and write.
+  var x = eval("({" + keyword + ": 42})");
+  assertEquals(42, x[keyword]);
+  assertEquals(42, eval("x." + keyword));
+  eval("x." + keyword + " = 37");
+  assertEquals(37, x[keyword]);
+  assertEquals(37, eval("x." + keyword));
+  
+  // Getter/setter property, read and write.
+  var y = eval("({value : 42, get " + keyword + "(){return this.value}," +
+               " set " + keyword + "(v) { this.value = v; }})");
+  assertEquals(42, y[keyword]);
+  assertEquals(42, eval("y." + keyword));
+  eval("y." + keyword + " = 37");
+  assertEquals(37, y[keyword]);
+  assertEquals(37, eval("y." + keyword));
+  
+  // Quoted keyword works is read back by unquoted as well.
+  var z = eval("({\"" + keyword + "\": 42})");
+  assertEquals(42, z[keyword]);
+  assertEquals(42, eval("z." + keyword));
+  
+  // Function property, called.
+  var was_called;
+  function test_call() { this.was_called = true; was_called = true; }
+  var w = eval("({" + keyword + ": test_call, was_called: false})");
+  eval("w." + keyword + "();");
+  assertTrue(was_called);
+  assertTrue(w.was_called);
+
+  // Function property, constructed.
+  function construct() { this.constructed = true; }
+  var v = eval("({" + keyword + ": construct})");
+  var vo = eval("new v." + keyword + "()");
+  assertTrue(vo instanceof construct);
+  assertTrue(vo.constructed);
+}
+
+for (var i = 0; i < keywords.length; i++) {
+  testKeywordProperty(keywords[i]);
+}
+
+// Test getter and setter properties with string/number literal names.
+
+var obj = {get 42() { return 42; },
+           get 3.14() { return "PI"; },
+           get "PI"() { return 3.14; },
+           readback: 0,
+           set 37(v) { this.readback = v; },
+           set 1.44(v) { this.readback = v; },
+           set "Poo"(v) { this.readback = v; }}
+
+assertEquals(42, obj[42]);
+assertEquals("PI", obj[3.14]);
+assertEquals(3.14, obj["PI"]);
+obj[37] = "t1";
+assertEquals("t1", obj.readback);
+obj[1.44] = "t2";
+assertEquals("t2", obj.readback);
+obj["Poo"] = "t3";
+assertEquals("t3", obj.readback);
+
+