summaryrefslogtreecommitdiff
path: root/jstests/core/js_jit.js
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2017-08-17 14:21:57 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2017-08-17 14:21:57 -0400
commit4cb5071ecb94d0789392b1748b49388099a8a2ec (patch)
tree2d1725f70e278da924ae4019f3f7f86be7e4771d /jstests/core/js_jit.js
parent66e2805eb1c5d130ae37ef4f72bc19b8db0fc8dc (diff)
downloadmongo-4cb5071ecb94d0789392b1748b49388099a8a2ec.tar.gz
SERVER-30362 MozJS - implement resolve instead of getProperty for native types
Diffstat (limited to 'jstests/core/js_jit.js')
-rw-r--r--jstests/core/js_jit.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/jstests/core/js_jit.js b/jstests/core/js_jit.js
new file mode 100644
index 00000000000..4ccdd2917ae
--- /dev/null
+++ b/jstests/core/js_jit.js
@@ -0,0 +1,40 @@
+/**
+ * Validate various native types continue to work when run in JITed code.
+ *
+ * In SERVER-30362, the JIT would not compile natives types which had custom getProperty
+ * implementations correctly. We force the JIT to kick in by using large loops.
+ */
+(function() {
+ 'use strict';
+
+ function testDBCollection() {
+ const c = new DBCollection(null, null, "foo", "test.foo");
+ for (let i = 0; i < 100000; i++) {
+ if (c.toString() != "test.foo") {
+ throw i;
+ }
+ }
+ }
+
+ function testDB() {
+ const c = new DB(null, "test");
+ for (let i = 0; i < 100000; i++) {
+ if (c.toString() != "test") {
+ throw i;
+ }
+ }
+ }
+
+ function testDBQuery() {
+ const c = DBQuery('a', 'b', 'c', 'd');
+ for (let i = 0; i < 100000; i++) {
+ if (c.toString() != "DBQuery: d -> null") {
+ throw i;
+ }
+ }
+ }
+
+ testDBCollection();
+ testDB();
+ testDBQuery();
+})(); \ No newline at end of file