| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/code_generator.h" | 5 #include "vm/code_generator.h" |
| 6 | 6 |
| 7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
| 8 #include "vm/ast.h" | 8 #include "vm/ast.h" |
| 9 #include "vm/bigint_operations.h" | 9 #include "vm/bigint_operations.h" |
| 10 #include "vm/code_patcher.h" | 10 #include "vm/code_patcher.h" |
| (...skipping 1671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1682 Isolate* isolate = Isolate::Current(); | 1682 Isolate* isolate = Isolate::Current(); |
| 1683 StackZone zone(isolate); | 1683 StackZone zone(isolate); |
| 1684 HANDLESCOPE(isolate); | 1684 HANDLESCOPE(isolate); |
| 1685 const Bigint& big_left = Bigint::Handle(left); | 1685 const Bigint& big_left = Bigint::Handle(left); |
| 1686 const Bigint& big_right = Bigint::Handle(right); | 1686 const Bigint& big_right = Bigint::Handle(right); |
| 1687 return BigintOperations::Compare(big_left, big_right); | 1687 return BigintOperations::Compare(big_left, big_right); |
| 1688 } | 1688 } |
| 1689 END_LEAF_RUNTIME_ENTRY | 1689 END_LEAF_RUNTIME_ENTRY |
| 1690 | 1690 |
| 1691 | 1691 |
| 1692 DEFINE_LEAF_RUNTIME_ENTRY(void, | |
| 1693 HeapTraceStore, | |
| 1694 RawObject* object, | |
| 1695 uword field_addr, | |
| 1696 RawObject* value) { | |
| 1697 if (!(object->IsHeapObject() && value->IsHeapObject())) { | |
| 1698 return; | |
| 1699 } | |
| 1700 HeapTrace* heap_trace = Isolate::Current()->heap()->trace(); | |
| 1701 heap_trace->TraceStoreIntoObject(RawObject::ToAddr(object), | |
| 1702 field_addr, | |
| 1703 RawObject::ToAddr(value)); | |
| 1704 } | |
| 1705 END_LEAF_RUNTIME_ENTRY | |
| 1706 | |
| 1707 | |
| 1708 double DartModulo(double left, double right) { | 1692 double DartModulo(double left, double right) { |
| 1709 double remainder = fmod_ieee(left, right); | 1693 double remainder = fmod_ieee(left, right); |
| 1710 if (remainder == 0.0) { | 1694 if (remainder == 0.0) { |
| 1711 // We explicitely switch to the positive 0.0 (just in case it was negative). | 1695 // We explicitely switch to the positive 0.0 (just in case it was negative). |
| 1712 remainder = +0.0; | 1696 remainder = +0.0; |
| 1713 } else if (remainder < 0.0) { | 1697 } else if (remainder < 0.0) { |
| 1714 if (right < 0) { | 1698 if (right < 0) { |
| 1715 remainder -= right; | 1699 remainder -= right; |
| 1716 } else { | 1700 } else { |
| 1717 remainder += right; | 1701 remainder += right; |
| 1718 } | 1702 } |
| 1719 } | 1703 } |
| 1720 return remainder; | 1704 return remainder; |
| 1721 } | 1705 } |
| 1722 | 1706 |
| 1723 | 1707 |
| 1724 // Update global type feedback recorded for a field recording the assignment | 1708 // Update global type feedback recorded for a field recording the assignment |
| 1725 // of the given value. | 1709 // of the given value. |
| 1726 // Arg0: Field object; | 1710 // Arg0: Field object; |
| 1727 // Arg1: Value that is being stored. | 1711 // Arg1: Value that is being stored. |
| 1728 DEFINE_RUNTIME_ENTRY(UpdateFieldCid, 2) { | 1712 DEFINE_RUNTIME_ENTRY(UpdateFieldCid, 2) { |
| 1729 ASSERT(arguments.ArgCount() == kUpdateFieldCidRuntimeEntry.argument_count()); | 1713 ASSERT(arguments.ArgCount() == kUpdateFieldCidRuntimeEntry.argument_count()); |
| 1730 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); | 1714 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); |
| 1731 const Object& value = Object::Handle(arguments.ArgAt(1)); | 1715 const Object& value = Object::Handle(arguments.ArgAt(1)); |
| 1732 | 1716 |
| 1733 field.UpdateCid(Class::Handle(value.clazz()).id()); | 1717 field.UpdateCid(Class::Handle(value.clazz()).id()); |
| 1734 } | 1718 } |
| 1735 | 1719 |
| 1736 } // namespace dart | 1720 } // namespace dart |
| OLD | NEW |