Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(718)

Unified Diff: test/mjsunit/migrations.js

Issue 360023003: Revert "Replace HeapNumber as doublebox with an explicit MutableHeapNumber." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/cctest/test-heap-profiler.cc ('k') | test/mjsunit/mjsunit.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/migrations.js
diff --git a/test/mjsunit/migrations.js b/test/mjsunit/migrations.js
deleted file mode 100644
index 4faae8e6e28cb34ffcffe77319b2d3e37067d0b3..0000000000000000000000000000000000000000
--- a/test/mjsunit/migrations.js
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2014 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-ayle license that can be
-// found in the LICENSE file.
-
-// Flags: --allow-natives-syntax --track-fields --expose-gc
-
-var global = Function('return this')();
-var verbose = 0;
-
-function test(ctor_desc, use_desc, migr_desc) {
- var n = 5;
- var objects = [];
- var results = [];
-
- if (verbose) {
- print();
- print("===========================================================");
- print("=== " + ctor_desc.name +
- " | " + use_desc.name + " |--> " + migr_desc.name);
- print("===========================================================");
- }
-
- // Clean ICs and transitions.
- %NotifyContextDisposed();
- gc(); gc(); gc();
-
-
- // create objects
- if (verbose) {
- print("-----------------------------");
- print("--- construct");
- print();
- }
- for (var i = 0; i < n; i++) {
- objects[i] = ctor_desc.ctor.apply(ctor_desc, ctor_desc.args(i));
- }
-
- try {
- // use them
- if (verbose) {
- print("-----------------------------");
- print("--- use 1");
- print();
- }
- var use = use_desc.use1;
- for (var i = 0; i < n; i++) {
- if (i == 3) %OptimizeFunctionOnNextCall(use);
- results[i] = use(objects[i], i);
- }
-
- // trigger migrations
- if (verbose) {
- print("-----------------------------");
- print("--- trigger migration");
- print();
- }
- var migr = migr_desc.migr;
- for (var i = 0; i < n; i++) {
- if (i == 3) %OptimizeFunctionOnNextCall(migr);
- migr(objects[i], i);
- }
-
- // use again
- if (verbose) {
- print("-----------------------------");
- print("--- use 2");
- print();
- }
- var use = use_desc.use2 !== undefined ? use_desc.use2 : use_desc.use1;
- for (var i = 0; i < n; i++) {
- if (i == 3) %OptimizeFunctionOnNextCall(use);
- results[i] = use(objects[i], i);
- if (verbose >= 2) print(results[i]);
- }
-
- } catch (e) {
- if (verbose) print("--- incompatible use: " + e);
- }
- return results;
-}
-
-
-var ctors = [
- {
- name: "none-to-double",
- ctor: function(v) { return {a: v}; },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "double",
- ctor: function(v) { var o = {}; o.a = v; return o; },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "none-to-smi",
- ctor: function(v) { return {a: v}; },
- args: function(i) { return [i]; },
- },
- {
- name: "smi",
- ctor: function(v) { var o = {}; o.a = v; return o; },
- args: function(i) { return [i]; },
- },
- {
- name: "none-to-object",
- ctor: function(v) { return {a: v}; },
- args: function(i) { return ["s"]; },
- },
- {
- name: "object",
- ctor: function(v) { var o = {}; o.a = v; return o; },
- args: function(i) { return ["s"]; },
- },
- {
- name: "{a:, b:, c:}",
- ctor: function(v1, v2, v3) { return {a: v1, b: v2, c: v3}; },
- args: function(i) { return [1.5 + i, 1.6, 1.7]; },
- },
- {
- name: "{a..h:}",
- ctor: function(v) { var o = {}; o.h=o.g=o.f=o.e=o.d=o.c=o.b=o.a=v; return o; },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "1",
- ctor: function(v) { var o = 1; o.a = v; return o; },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "f()",
- ctor: function(v) { var o = function() { return v;}; o.a = v; return o; },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "f().bind",
- ctor: function(v) { var o = function(a,b,c) { return a+b+c; }; o = o.bind(o, v, v+1, v+2.2); return o; },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "dictionary elements",
- ctor: function(v) { var o = []; o[1] = v; o[200000] = v; return o; },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "json",
- ctor: function(v) { var json = '{"a":' + v + ',"b":' + v + '}'; return JSON.parse(json); },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "fast accessors",
- accessor: {
- get: function() { return this.a_; },
- set: function(value) {this.a_ = value; },
- configurable: true,
- },
- ctor: function(v) {
- var o = {a_:v};
- Object.defineProperty(o, "a", this.accessor);
- return o;
- },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "slow accessor",
- accessor1: { value: this.a_, configurable: true },
- accessor2: {
- get: function() { return this.a_; },
- set: function(value) {this.a_ = value; },
- configurable: true,
- },
- ctor: function(v) {
- var o = {a_:v};
- Object.defineProperty(o, "a", this.accessor1);
- Object.defineProperty(o, "a", this.accessor2);
- return o;
- },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "slow",
- proto: {},
- ctor: function(v) {
- var o = {__proto__: this.proto};
- o.a = v;
- for (var i = 0; %HasFastProperties(o); i++) o["f"+i] = v;
- return o;
- },
- args: function(i) { return [1.5 + i]; },
- },
- {
- name: "global",
- ctor: function(v) { return global; },
- args: function(i) { return [i]; },
- },
-];
-
-
-
-var uses = [
- {
- name: "o.a+1.0",
- use1: function(o, i) { return o.a + 1.0; },
- use2: function(o, i) { return o.a + 1.1; },
- },
- {
- name: "o.b+1.0",
- use1: function(o, i) { return o.b + 1.0; },
- use2: function(o, i) { return o.b + 1.1; },
- },
- {
- name: "o[1]+1.0",
- use1: function(o, i) { return o[1] + 1.0; },
- use2: function(o, i) { return o[1] + 1.1; },
- },
- {
- name: "o[-1]+1.0",
- use1: function(o, i) { return o[-1] + 1.0; },
- use2: function(o, i) { return o[-1] + 1.1; },
- },
- {
- name: "()",
- use1: function(o, i) { return o() + 1.0; },
- use2: function(o, i) { return o() + 1.1; },
- },
-];
-
-
-
-var migrations = [
- {
- name: "to smi",
- migr: function(o, i) { if (i == 0) o.a = 1; },
- },
- {
- name: "to double",
- migr: function(o, i) { if (i == 0) o.a = 1.1; },
- },
- {
- name: "to object",
- migr: function(o, i) { if (i == 0) o.a = {}; },
- },
- {
- name: "set prototype {}",
- migr: function(o, i) { o.__proto__ = {}; },
- },
- {
- name: "%FunctionSetPrototype",
- migr: function(o, i) { %FunctionSetPrototype(o, null); },
- },
- {
- name: "modify prototype",
- migr: function(o, i) { if (i == 0) o.__proto__.__proto1__ = [,,,5,,,]; },
- },
- {
- name: "freeze prototype",
- migr: function(o, i) { if (i == 0) Object.freeze(o.__proto__); },
- },
- {
- name: "delete and re-add property",
- migr: function(o, i) { var v = o.a; delete o.a; o.a = v; },
- },
- {
- name: "modify prototype",
- migr: function(o, i) { if (i >= 0) o.__proto__ = {}; },
- },
- {
- name: "set property callback",
- migr: function(o, i) {
- Object.defineProperty(o, "a", {
- get: function() { return 1.5 + i; },
- set: function(value) {},
- configurable: true,
- });
- },
- },
- {
- name: "observe",
- migr: function(o, i) { Object.observe(o, function(){}); },
- },
- {
- name: "%EnableAccessChecks",
- migr: function(o, i) { %EnableAccessChecks(o); },
- },
- {
- name: "%DisableAccessChecks",
- migr: function(o, i) { if (o !== global) %DisableAccessChecks(o); },
- },
- {
- name: "seal",
- migr: function(o, i) { Object.seal(o); },
- },
- { // Must be the last in the sequence, because after the global object freeze
- // the other modifications does not make sence.
- name: "freeze",
- migr: function(o, i) { Object.freeze(o); },
- },
-];
-
-
-
-migrations.forEach(function(migr) {
- uses.forEach(function(use) {
- ctors.forEach(function(ctor) {
- test(ctor, use, migr);
- });
- });
-});
« no previous file with comments | « test/cctest/test-heap-profiler.cc ('k') | test/mjsunit/mjsunit.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698