| Index: src/lithium.h
|
| diff --git a/test/mjsunit/bugs/bug-1015.js b/src/lithium.h
|
| similarity index 53%
|
| copy from test/mjsunit/bugs/bug-1015.js
|
| copy to src/lithium.h
|
| index 9e4406a9aabade1fa40dd13bd439a1d395dbe5cd..0ea37699fa7219d91d90a60f08415c86de67c7d5 100644
|
| --- a/test/mjsunit/bugs/bug-1015.js
|
| +++ b/src/lithium.h
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2010 the V8 project authors. All rights reserved.
|
| +// Copyright 2011 the V8 project authors. All rights reserved.
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| // met:
|
| @@ -25,42 +25,39 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// See: http://code.google.com/p/v8/issues/detail?id=1015
|
| +#ifndef V8_LITHIUM_H_
|
| +#define V8_LITHIUM_H_
|
|
|
| -// Object and array literals should be created using DefineOwnProperty, and
|
| -// therefore not hit setters in the prototype.
|
| +#include "lithium-allocator.h"
|
|
|
| -function mkFail(message) {
|
| - return function () { assertUnreachable(message); }
|
| -}
|
| +namespace v8 {
|
| +namespace internal {
|
|
|
| -Object.defineProperty(Object.prototype, "foo",
|
| - {get: mkFail("oget"), set: mkFail("oset")});
|
| -Object.defineProperty(Array.prototype, "2",
|
| - {get: mkFail("aget"), set: mkFail("aset")});
|
| +class LGapNode;
|
|
|
| -function inFunction() {
|
| - for (var i = 0; i < 10; i++) {
|
| - // in loop.
|
| - var ja = JSON.parse('[1,2,3,4]');
|
| - var jo = JSON.parse('{"bar": 10, "foo": 20}')
|
| - var jop = JSON.parse('{"bar": 10, "__proto__": { }, "foo": 20}')
|
| - var a = [1,2,3,4];
|
| - var o = { bar: 10, foo: 20 };
|
| - var op = { __proto__: { set bar(v) { assertUnreachable("bset"); } },
|
| - bar: 10 };
|
| - }
|
| -}
|
| +class LGapResolver BASE_EMBEDDED {
|
| + public:
|
| + LGapResolver(const ZoneList<LMoveOperands>* moves, LOperand* marker_operand);
|
| + const ZoneList<LMoveOperands>* ResolveInReverseOrder();
|
|
|
| -for (var i = 0; i < 10; i++) {
|
| - // In global scope.
|
| - var ja = JSON.parse('[1,2,3,4]');
|
| - var jo = JSON.parse('{"bar": 10, "foo": 20}')
|
| - var jop = JSON.parse('{"bar": 10, "__proto__": { }, "foo": 20}')
|
| - var a = [1,2,3,4];
|
| - var o = { bar: 10, foo: 20 };
|
| - var op = { __proto__: { set bar(v) { assertUnreachable("bset"); } },
|
| - bar: 10 };
|
| - // In function scope.
|
| - inFunction();
|
| -}
|
| + private:
|
| + LGapNode* LookupNode(LOperand* operand);
|
| + bool CanReach(LGapNode* a, LGapNode* b, int visited_id);
|
| + bool CanReach(LGapNode* a, LGapNode* b);
|
| + void RegisterMove(LMoveOperands move);
|
| + void AddResultMove(LOperand* from, LOperand* to);
|
| + void AddResultMove(LGapNode* from, LGapNode* to);
|
| + void ResolveCycle(LGapNode* start);
|
| +
|
| + ZoneList<LGapNode*> nodes_;
|
| + ZoneList<LGapNode*> identified_cycles_;
|
| + ZoneList<LMoveOperands> result_;
|
| + LOperand* marker_operand_;
|
| + int next_visited_id_;
|
| + int bailout_after_ast_id_;
|
| +};
|
| +
|
| +
|
| +} } // namespace v8::internal
|
| +
|
| +#endif // V8_LITHIUM_H_
|
|
|