| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdlib.h> | 5 #include <stdlib.h> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/compilation-cache.h" | 10 #include "src/compilation-cache.h" |
| 11 #include "src/execution.h" | 11 #include "src/execution.h" |
| 12 #include "src/factory.h" | 12 #include "src/factory.h" |
| 13 #include "src/global-handles.h" | 13 #include "src/global-handles.h" |
| 14 #include "src/ic/ic.h" | 14 #include "src/ic/ic.h" |
| 15 #include "src/macro-assembler.h" | 15 #include "src/macro-assembler.h" |
| 16 #include "test/cctest/cctest.h" | 16 #include "test/cctest/cctest.h" |
| 17 #include "test/cctest/heap-tester.h" |
| 17 | 18 |
| 18 using namespace v8::base; | 19 using namespace v8::base; |
| 19 using namespace v8::internal; | 20 using namespace v8::internal; |
| 20 | 21 |
| 21 #if V8_DOUBLE_FIELDS_UNBOXING | 22 #if V8_DOUBLE_FIELDS_UNBOXING |
| 22 | 23 |
| 23 | 24 |
| 24 // | 25 // |
| 25 // Helper functions. | 26 // Helper functions. |
| 26 // | 27 // |
| (...skipping 1368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1395 | 1396 |
| 1396 CHECK_EQ(boom_value, GetDoubleFieldValue(*obj, field_index)); | 1397 CHECK_EQ(boom_value, GetDoubleFieldValue(*obj, field_index)); |
| 1397 } | 1398 } |
| 1398 | 1399 |
| 1399 | 1400 |
| 1400 static int LenFromSize(int size) { | 1401 static int LenFromSize(int size) { |
| 1401 return (size - FixedArray::kHeaderSize) / kPointerSize; | 1402 return (size - FixedArray::kHeaderSize) / kPointerSize; |
| 1402 } | 1403 } |
| 1403 | 1404 |
| 1404 | 1405 |
| 1405 TEST(WriteBarriersInCopyJSObject) { | 1406 HEAP_TEST(WriteBarriersInCopyJSObject) { |
| 1406 FLAG_max_semi_space_size = 1; // Ensure new space is not growing. | 1407 FLAG_max_semi_space_size = 1; // Ensure new space is not growing. |
| 1407 CcTest::InitializeVM(); | 1408 CcTest::InitializeVM(); |
| 1408 Isolate* isolate = CcTest::i_isolate(); | 1409 Isolate* isolate = CcTest::i_isolate(); |
| 1409 TestHeap* heap = CcTest::test_heap(); | 1410 Heap* heap = CcTest::heap(); |
| 1410 | 1411 |
| 1411 v8::HandleScope scope(CcTest::isolate()); | 1412 v8::HandleScope scope(CcTest::isolate()); |
| 1412 | 1413 |
| 1413 // The plan: create JSObject which contains unboxed double value that looks | 1414 // The plan: create JSObject which contains unboxed double value that looks |
| 1414 // like a reference to an object in new space. | 1415 // like a reference to an object in new space. |
| 1415 // Then clone this object (forcing it to go into old space) and check | 1416 // Then clone this object (forcing it to go into old space) and check |
| 1416 // that the value of the unboxed double property of the cloned object has | 1417 // that the value of the unboxed double property of the cloned object has |
| 1417 // was not corrupted by GC. | 1418 // was not corrupted by GC. |
| 1418 | 1419 |
| 1419 // Step 1: prepare a map for the object. We add unboxed double property to it. | 1420 // Step 1: prepare a map for the object. We add unboxed double property to it. |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1680 | 1681 |
| 1681 // TODO(ishell): add respective tests for property kind reconfiguring from | 1682 // TODO(ishell): add respective tests for property kind reconfiguring from |
| 1682 // accessor field to double, once accessor fields are supported by | 1683 // accessor field to double, once accessor fields are supported by |
| 1683 // Map::ReconfigureProperty(). | 1684 // Map::ReconfigureProperty(). |
| 1684 | 1685 |
| 1685 | 1686 |
| 1686 // TODO(ishell): add respective tests for fast property removal case once | 1687 // TODO(ishell): add respective tests for fast property removal case once |
| 1687 // Map::ReconfigureProperty() supports that. | 1688 // Map::ReconfigureProperty() supports that. |
| 1688 | 1689 |
| 1689 #endif | 1690 #endif |
| OLD | NEW |