summaryrefslogtreecommitdiff
path: root/js/src/metrics/gc/tests/dslots.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/metrics/gc/tests/dslots.js')
-rw-r--r--js/src/metrics/gc/tests/dslots.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/js/src/metrics/gc/tests/dslots.js b/js/src/metrics/gc/tests/dslots.js
new file mode 100644
index 0000000..8fcb6e8
--- /dev/null
+++ b/js/src/metrics/gc/tests/dslots.js
@@ -0,0 +1,26 @@
+//Benchmark to measure overhead of dslots allocation and deallocation
+
+function Object0() {};
+function Object1() { this.a=1; };
+function Object2() { this.a=1; this.b=1; };
+function Object3() { this.a=1; this.b=1; this.c=1; };
+function Object4() { this.a=1; this.b=1; this.c=1; this.d=1; };
+function Object5() { this.a=1; this.b=1; this.c=1; this.d=1; this.e=1; };
+
+function test() {
+ var N = 1e5;
+ gc();
+
+ for(var i = 0; i<=5; i++)
+ {
+ var tmp = i==0 ? Object0 : i==1 ? Object1 : i==2 ? Object2 : i==3 ? Object3 : i==4 ? Object4 : Object5;
+ for (var j = 0; j != N; j++) {
+ var a = new tmp();
+ }
+ gc();
+ }
+}
+
+for(var i = 0; i<=5; i++) {
+ test();
+}