50 TypedDataBase::CheckedHandle(zone, arguments->NativeArgAt(0));
51 const Smi& dst_start_smi =
52 Smi::CheckedHandle(zone, arguments->NativeArgAt(1));
53 const Smi& length_smi = Smi::CheckedHandle(zone, arguments->NativeArgAt(2));
55 TypedDataBase::CheckedHandle(zone, arguments->NativeArgAt(3));
56 const Smi& src_start_smi =
57 Smi::CheckedHandle(zone, arguments->NativeArgAt(4));
59 const intptr_t element_size_in_bytes = dst.ElementSizeInBytes();
60 ASSERT_EQUAL(src.ElementSizeInBytes(), element_size_in_bytes);
62 const intptr_t dst_start_in_bytes =
63 dst_start_smi.
Value() * element_size_in_bytes;
64 const intptr_t length_in_bytes = length_smi.
Value() * element_size_in_bytes;
65 const intptr_t src_start_in_bytes =
66 src_start_smi.
Value() * element_size_in_bytes;
70 ASSERT(dst_start_in_bytes >= 0);
71 ASSERT(src_start_in_bytes >= 0);
73 ASSERT(length_in_bytes > 0);
75 const intptr_t dst_length_in_bytes = dst.LengthInBytes();
77 ASSERT(dst_start_in_bytes < dst_length_in_bytes);
78 ASSERT(length_in_bytes <= dst_length_in_bytes - dst_start_in_bytes);
80 const intptr_t src_length_in_bytes = src.LengthInBytes();
82 ASSERT(src_start_in_bytes < src_length_in_bytes);
83 ASSERT(length_in_bytes <= src_length_in_bytes - src_start_in_bytes);
96 reinterpret_cast<uint8_t*
>(dst.DataAddr(dst_start_in_bytes));
98 reinterpret_cast<int8_t*
>(src.DataAddr(src_start_in_bytes));
99 for (intptr_t ix = 0; ix < length_in_bytes; ix++) {
100 int8_t v = *src_data;
#define DEFINE_NATIVE_ENTRY(name, type_argument_count, argument_count)
#define GET_NON_NULL_NATIVE_ARGUMENT(type, name, value)