summaryrefslogtreecommitdiff
path: root/jstests/core/js_jit.js
diff options
context:
space:
mode:
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