OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 <iomanip> | 5 #include <iomanip> |
6 #include <sstream> | 6 #include <sstream> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1629 | 1629 |
1630 #define FIELD_ADDR_CONST(p, offset) \ | 1630 #define FIELD_ADDR_CONST(p, offset) \ |
1631 (reinterpret_cast<const byte*>(p) + offset - kHeapObjectTag) | 1631 (reinterpret_cast<const byte*>(p) + offset - kHeapObjectTag) |
1632 | 1632 |
1633 #define READ_INT32_FIELD(p, offset) \ | 1633 #define READ_INT32_FIELD(p, offset) \ |
1634 (*reinterpret_cast<const int32_t*>(FIELD_ADDR_CONST(p, offset))) | 1634 (*reinterpret_cast<const int32_t*>(FIELD_ADDR_CONST(p, offset))) |
1635 | 1635 |
1636 #define READ_INT64_FIELD(p, offset) \ | 1636 #define READ_INT64_FIELD(p, offset) \ |
1637 (*reinterpret_cast<const int64_t*>(FIELD_ADDR_CONST(p, offset))) | 1637 (*reinterpret_cast<const int64_t*>(FIELD_ADDR_CONST(p, offset))) |
1638 | 1638 |
| 1639 #define READ_BYTE_FIELD(p, offset) \ |
| 1640 (*reinterpret_cast<const byte*>(FIELD_ADDR_CONST(p, offset))) |
| 1641 |
1639 | 1642 |
1640 bool Simd128Value::BitwiseEquals(const Simd128Value* other) const { | 1643 bool Simd128Value::BitwiseEquals(const Simd128Value* other) const { |
1641 return READ_INT64_FIELD(this, kValueOffset) == | 1644 return READ_INT64_FIELD(this, kValueOffset) == |
1642 READ_INT64_FIELD(other, kValueOffset) && | 1645 READ_INT64_FIELD(other, kValueOffset) && |
1643 READ_INT64_FIELD(this, kValueOffset + kInt64Size) == | 1646 READ_INT64_FIELD(this, kValueOffset + kInt64Size) == |
1644 READ_INT64_FIELD(other, kValueOffset + kInt64Size); | 1647 READ_INT64_FIELD(other, kValueOffset + kInt64Size); |
1645 } | 1648 } |
1646 | 1649 |
1647 | 1650 |
1648 uint32_t Simd128Value::Hash() const { | 1651 uint32_t Simd128Value::Hash() const { |
1649 uint32_t seed = v8::internal::kZeroHashSeed; | 1652 uint32_t seed = v8::internal::kZeroHashSeed; |
1650 uint32_t hash; | 1653 uint32_t hash; |
1651 hash = ComputeIntegerHash(READ_INT32_FIELD(this, kValueOffset), seed); | 1654 hash = ComputeIntegerHash(READ_INT32_FIELD(this, kValueOffset), seed); |
1652 hash = ComputeIntegerHash( | 1655 hash = ComputeIntegerHash( |
1653 READ_INT32_FIELD(this, kValueOffset + 1 * kInt32Size), hash * 31); | 1656 READ_INT32_FIELD(this, kValueOffset + 1 * kInt32Size), hash * 31); |
1654 hash = ComputeIntegerHash( | 1657 hash = ComputeIntegerHash( |
1655 READ_INT32_FIELD(this, kValueOffset + 2 * kInt32Size), hash * 31); | 1658 READ_INT32_FIELD(this, kValueOffset + 2 * kInt32Size), hash * 31); |
1656 hash = ComputeIntegerHash( | 1659 hash = ComputeIntegerHash( |
1657 READ_INT32_FIELD(this, kValueOffset + 3 * kInt32Size), hash * 31); | 1660 READ_INT32_FIELD(this, kValueOffset + 3 * kInt32Size), hash * 31); |
1658 return hash; | 1661 return hash; |
1659 } | 1662 } |
1660 | 1663 |
1661 | 1664 |
| 1665 void Simd128Value::CopyBits(void* destination) const { |
| 1666 memcpy(destination, &READ_BYTE_FIELD(this, kValueOffset), kSimd128Size); |
| 1667 } |
| 1668 |
| 1669 |
1662 String* JSReceiver::class_name() { | 1670 String* JSReceiver::class_name() { |
1663 if (IsJSFunction() || IsJSFunctionProxy()) { | 1671 if (IsJSFunction() || IsJSFunctionProxy()) { |
1664 return GetHeap()->Function_string(); | 1672 return GetHeap()->Function_string(); |
1665 } | 1673 } |
1666 Object* maybe_constructor = map()->GetConstructor(); | 1674 Object* maybe_constructor = map()->GetConstructor(); |
1667 if (maybe_constructor->IsJSFunction()) { | 1675 if (maybe_constructor->IsJSFunction()) { |
1668 JSFunction* constructor = JSFunction::cast(maybe_constructor); | 1676 JSFunction* constructor = JSFunction::cast(maybe_constructor); |
1669 return String::cast(constructor->shared()->instance_class_name()); | 1677 return String::cast(constructor->shared()->instance_class_name()); |
1670 } | 1678 } |
1671 // If the constructor is not present, return "Object". | 1679 // If the constructor is not present, return "Object". |
(...skipping 14223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15895 if (cell->value() != *new_value) { | 15903 if (cell->value() != *new_value) { |
15896 cell->set_value(*new_value); | 15904 cell->set_value(*new_value); |
15897 Isolate* isolate = cell->GetIsolate(); | 15905 Isolate* isolate = cell->GetIsolate(); |
15898 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 15906 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
15899 isolate, DependentCode::kPropertyCellChangedGroup); | 15907 isolate, DependentCode::kPropertyCellChangedGroup); |
15900 } | 15908 } |
15901 } | 15909 } |
15902 | 15910 |
15903 } // namespace internal | 15911 } // namespace internal |
15904 } // namespace v8 | 15912 } // namespace v8 |
OLD | NEW |