| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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/object.h" | 5 #include "vm/object.h" |
| 6 | 6 |
| 7 #include "platform/assert.h" | 7 #include "platform/assert.h" |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/bigint_operations.h" | 9 #include "vm/bigint_operations.h" |
| 10 #include "vm/bootstrap.h" | 10 #include "vm/bootstrap.h" |
| (...skipping 7810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7821 } | 7821 } |
| 7822 | 7822 |
| 7823 | 7823 |
| 7824 void ByteArray::Copy(uint8_t* dst, | 7824 void ByteArray::Copy(uint8_t* dst, |
| 7825 const ByteArray& src, | 7825 const ByteArray& src, |
| 7826 intptr_t src_offset, | 7826 intptr_t src_offset, |
| 7827 intptr_t length) { | 7827 intptr_t length) { |
| 7828 ASSERT(Utils::RangeCheck(src_offset, length, src.Length())); | 7828 ASSERT(Utils::RangeCheck(src_offset, length, src.Length())); |
| 7829 { | 7829 { |
| 7830 NoGCScope no_gc; | 7830 NoGCScope no_gc; |
| 7831 memmove(dst, src.ByteAddr(src_offset), length); | 7831 if (length > 0) { |
| 7832 memmove(dst, src.ByteAddr(src_offset), length); |
| 7833 } |
| 7832 } | 7834 } |
| 7833 } | 7835 } |
| 7834 | 7836 |
| 7835 | 7837 |
| 7836 void ByteArray::Copy(const ByteArray& dst, | 7838 void ByteArray::Copy(const ByteArray& dst, |
| 7837 intptr_t dst_offset, | 7839 intptr_t dst_offset, |
| 7838 const uint8_t* src, | 7840 const uint8_t* src, |
| 7839 intptr_t length) { | 7841 intptr_t length) { |
| 7840 ASSERT(Utils::RangeCheck(dst_offset, length, dst.Length())); | 7842 ASSERT(Utils::RangeCheck(dst_offset, length, dst.Length())); |
| 7841 { | 7843 { |
| 7842 NoGCScope no_gc; | 7844 NoGCScope no_gc; |
| 7843 memmove(dst.ByteAddr(dst_offset), src, length); | 7845 if (length > 0) { |
| 7846 memmove(dst.ByteAddr(dst_offset), src, length); |
| 7847 } |
| 7844 } | 7848 } |
| 7845 } | 7849 } |
| 7846 | 7850 |
| 7847 | 7851 |
| 7848 void ByteArray::Copy(const ByteArray& dst, | 7852 void ByteArray::Copy(const ByteArray& dst, |
| 7849 intptr_t dst_offset, | 7853 intptr_t dst_offset, |
| 7850 const ByteArray& src, | 7854 const ByteArray& src, |
| 7851 intptr_t src_offset, | 7855 intptr_t src_offset, |
| 7852 intptr_t length) { | 7856 intptr_t length) { |
| 7853 ASSERT(Utils::RangeCheck(src_offset, length, src.Length())); | 7857 ASSERT(Utils::RangeCheck(src_offset, length, src.Length())); |
| 7854 ASSERT(Utils::RangeCheck(dst_offset, length, dst.Length())); | 7858 ASSERT(Utils::RangeCheck(dst_offset, length, dst.Length())); |
| 7855 { | 7859 { |
| 7856 NoGCScope no_gc; | 7860 NoGCScope no_gc; |
| 7857 memmove(dst.ByteAddr(dst_offset), src.ByteAddr(src_offset), length); | 7861 if (length > 0) { |
| 7862 memmove(dst.ByteAddr(dst_offset), src.ByteAddr(src_offset), length); |
| 7863 } |
| 7858 } | 7864 } |
| 7859 } | 7865 } |
| 7860 | 7866 |
| 7861 | 7867 |
| 7862 uint8_t* ByteArray::ByteAddr(intptr_t byte_offset) const { | 7868 uint8_t* ByteArray::ByteAddr(intptr_t byte_offset) const { |
| 7863 // ByteArray is an abstract class. | 7869 // ByteArray is an abstract class. |
| 7864 UNREACHABLE(); | 7870 UNREACHABLE(); |
| 7865 return NULL; | 7871 return NULL; |
| 7866 } | 7872 } |
| 7867 | 7873 |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8366 result.set_num_args_tested(num_args_tested); | 8372 result.set_num_args_tested(num_args_tested); |
| 8367 // Number of array elements in one test entry (num_args_tested + 1) | 8373 // Number of array elements in one test entry (num_args_tested + 1) |
| 8368 intptr_t len = num_args_tested + 1; | 8374 intptr_t len = num_args_tested + 1; |
| 8369 // IC data array must be null terminated (sentinel entry). | 8375 // IC data array must be null terminated (sentinel entry). |
| 8370 Array& ic_data = Array::Handle(Array::New(len, Heap::kOld)); | 8376 Array& ic_data = Array::Handle(Array::New(len, Heap::kOld)); |
| 8371 result.set_ic_data(ic_data); | 8377 result.set_ic_data(ic_data); |
| 8372 return result.raw(); | 8378 return result.raw(); |
| 8373 } | 8379 } |
| 8374 | 8380 |
| 8375 } // namespace dart | 8381 } // namespace dart |
| OLD | NEW |