diff --git a/js/src/tests/test262/ch13/13.2/13.2-29-s.js b/js/src/tests/test262/ch13/13.2/13.2-29-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-29-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-29-s.js
@@ -8,12 +8,12 @@
  * @description StrictMode - property named 'caller' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
         function foo() {"use strict";}
-        return ! Object.getOwnPropertyDescriptor(foo, 
-                                                  "caller").configurable;
+        return Object.getOwnPropertyDescriptor(foo, 
+                                               "caller") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-30-s.js b/js/src/tests/test262/ch13/13.2/13.2-30-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-30-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-30-s.js
@@ -7,12 +7,12 @@
  * @path ch13/13.2/13.2-30-s.js
  * @description StrictMode - property named 'caller' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
-        return ! Object.getOwnPropertyDescriptor(Function("'use strict';"), 
-                                                  "caller").configurable;
+        return Object.getOwnPropertyDescriptor(Function("'use strict';"), 
+                                               "caller") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-31-s.js b/js/src/tests/test262/ch13/13.2/13.2-31-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-31-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-31-s.js
@@ -7,12 +7,12 @@
  * @path ch13/13.2/13.2-31-s.js
  * @description StrictMode - property named 'caller' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
-        return ! Object.getOwnPropertyDescriptor(new Function("'use strict';"), 
-                                                  "caller").configurable;
+        return Object.getOwnPropertyDescriptor(new Function("'use strict';"), 
+                                               "caller") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-32-s.js b/js/src/tests/test262/ch13/13.2/13.2-32-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-32-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-32-s.js
@@ -8,12 +8,12 @@
  * @description StrictMode - property named 'caller' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
         var funcExpr = function () { "use strict";};
-        return ! Object.getOwnPropertyDescriptor(funcExpr, 
-                                                  "caller").configurable;
+        return Object.getOwnPropertyDescriptor(funcExpr, 
+                                                  "caller") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-33-s.js b/js/src/tests/test262/ch13/13.2/13.2-33-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-33-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-33-s.js
@@ -8,12 +8,12 @@
  * @description StrictMode - property named 'arguments' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
         function foo() {"use strict";}
-        return ! Object.getOwnPropertyDescriptor(foo, 
-                                                  "arguments").configurable;
+        return Object.getOwnPropertyDescriptor(foo, 
+                                               "arguments") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-34-s.js b/js/src/tests/test262/ch13/13.2/13.2-34-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-34-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-34-s.js
@@ -7,12 +7,12 @@
  * @path ch13/13.2/13.2-34-s.js
  * @description StrictMode - property named 'arguments' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
-        return ! Object.getOwnPropertyDescriptor(Function("'use strict';"), 
-                                                  "arguments").configurable;
+        return Object.getOwnPropertyDescriptor(Function("'use strict';"), 
+                                               "arguments") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-35-s.js b/js/src/tests/test262/ch13/13.2/13.2-35-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-35-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-35-s.js
@@ -7,12 +7,12 @@
  * @path ch13/13.2/13.2-35-s.js
  * @description StrictMode - property named 'arguments' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
-        return ! Object.getOwnPropertyDescriptor(new Function("'use strict';"), 
-                                                  "arguments").configurable;
+        return Object.getOwnPropertyDescriptor(new Function("'use strict';"), 
+                                               "arguments") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-36-s.js b/js/src/tests/test262/ch13/13.2/13.2-36-s.js
--- a/js/src/tests/test262/ch13/13.2/13.2-36-s.js
+++ b/js/src/tests/test262/ch13/13.2/13.2-36-s.js
@@ -8,12 +8,12 @@
  * @description StrictMode - property named 'arguments' of function objects is not configurable
  * @onlyStrict
  */
 
 
 
 function testcase() {
         var funcExpr = function () { "use strict";};
-        return ! Object.getOwnPropertyDescriptor(funcExpr, 
-                                                  "arguments").configurable;
+        return Object.getOwnPropertyDescriptor(funcExpr, 
+                                                "arguments") === undefined;
 }
-runTestCase(testcase);
\ No newline at end of file
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.3_A1.js b/js/src/tests/test262/ch13/13.2/S13.2.3_A1.js
--- a/js/src/tests/test262/ch13/13.2/S13.2.3_A1.js
+++ b/js/src/tests/test262/ch13/13.2/S13.2.3_A1.js
@@ -1,49 +1,61 @@
 // Copyright 2011 Google Inc.  All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 
 /**
  * @path ch13/13.2/S13.2.3_A1.js
- * @description check that all poisoning use the [[ThrowTypeError]]
+ * @description check that strict mode functions/arguments have
+ *   [[ThrowTypeError]]-like behavior
  * function object.
  * @onlyStrict
  */
 
 "use strict";
-var poison = Object.getOwnPropertyDescriptor(function() {}, 'caller').get;
+var poison = Object.getOwnPropertyDescriptor(Function.prototype, 'caller').get;
 
 if (typeof poison !== 'function') {
   $ERROR("#1: A strict function's .caller should be poisoned with a function");
 }
 var threw = null;
 try {
-  poison();
+  poison.call(function() {});
 } catch (err) {
   threw = err;
 }
 if (!threw || !(threw instanceof TypeError)) {
   $ERROR("#2: Poisoned property should throw TypeError");
 }
 
+function checkNotPresent(obj, name) {
+  var desc = Object.getOwnPropertyDescriptor(obj, name);
+  if (desc !== undefined) {
+    $ERROR("#3: " + name + " should not appear as a descriptor");
+  }
+}
+
+var argumentsPoison =
+  Object.getOwnPropertyDescriptor(function() { return arguments; }(),
+                                  "callee").get;
+
 function checkPoison(obj, name) {
   var desc = Object.getOwnPropertyDescriptor(obj, name);
   if (desc.enumerable) {
     $ERROR("#3: Poisoned " + name + " should not be enumerable");
   }
   if (desc.configurable) {
     $ERROR("#4: Poisoned " + name + " should not be configurable");
   }
-  if (poison !== desc.get) {
+  if (argumentsPoison !== desc.get) {
     $ERROR("#5: " + name + "'s getter not poisoned with same poison");
   }
-  if (poison !== desc.set) {
+  if (argumentsPoison !== desc.set) {
     $ERROR("#6: " + name + "'s setter not poisoned with same poison");
   }
 }
 
-checkPoison(function() {}, 'caller');
-checkPoison(function() {}, 'arguments');
+checkNotPresent(function() {}, 'caller');
+checkNotPresent(function() {}, 'arguments');
 checkPoison((function() { return arguments; })(), 'caller');
 checkPoison((function() { return arguments; })(), 'callee');
-checkPoison((function() {}).bind(null), 'caller');
-checkPoison((function() {}).bind(null), 'arguments');
+checkNotPresent((function() {}).bind(null), 'caller');
+checkNotPresent((function() {}).bind(null), 'arguments');