| 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 "include/dart_api.h" | 5 #include "include/dart_api.h" |
| 6 #include "include/dart_mirrors_api.h" | 6 #include "include/dart_mirrors_api.h" |
| 7 #include "include/dart_native_api.h" | 7 #include "include/dart_native_api.h" |
| 8 | 8 |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "lib/stacktrace.h" | 10 #include "lib/stacktrace.h" |
| (...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 } | 609 } |
| 610 return false; | 610 return false; |
| 611 } | 611 } |
| 612 | 612 |
| 613 | 613 |
| 614 bool Api::GetNativeReceiver(NativeArguments* arguments, intptr_t* value) { | 614 bool Api::GetNativeReceiver(NativeArguments* arguments, intptr_t* value) { |
| 615 NoSafepointScope no_safepoint_scope; | 615 NoSafepointScope no_safepoint_scope; |
| 616 RawObject* raw_obj = arguments->NativeArg0(); | 616 RawObject* raw_obj = arguments->NativeArg0(); |
| 617 if (raw_obj->IsHeapObject()) { | 617 if (raw_obj->IsHeapObject()) { |
| 618 intptr_t cid = raw_obj->GetClassId(); | 618 intptr_t cid = raw_obj->GetClassId(); |
| 619 if (cid > kNumPredefinedCids) { | 619 if (cid >= kNumPredefinedCids) { |
| 620 ASSERT(Instance::Cast(Object::Handle(raw_obj)).IsValidNativeIndex(0)); | 620 ASSERT(Instance::Cast(Object::Handle(raw_obj)).IsValidNativeIndex(0)); |
| 621 RawTypedData* native_fields = *reinterpret_cast<RawTypedData**>( | 621 RawTypedData* native_fields = *reinterpret_cast<RawTypedData**>( |
| 622 RawObject::ToAddr(raw_obj) + sizeof(RawObject)); | 622 RawObject::ToAddr(raw_obj) + sizeof(RawObject)); |
| 623 if (native_fields == TypedData::null()) { | 623 if (native_fields == TypedData::null()) { |
| 624 *value = 0; | 624 *value = 0; |
| 625 } else { | 625 } else { |
| 626 *value = *bit_cast<intptr_t*, uint8_t*>(native_fields->ptr()->data()); | 626 *value = *bit_cast<intptr_t*, uint8_t*>(native_fields->ptr()->data()); |
| 627 } | 627 } |
| 628 return true; | 628 return true; |
| 629 } | 629 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 | 694 |
| 695 | 695 |
| 696 bool Api::GetNativeFieldsOfArgument(NativeArguments* arguments, | 696 bool Api::GetNativeFieldsOfArgument(NativeArguments* arguments, |
| 697 int arg_index, | 697 int arg_index, |
| 698 int num_fields, | 698 int num_fields, |
| 699 intptr_t* field_values) { | 699 intptr_t* field_values) { |
| 700 NoSafepointScope no_safepoint_scope; | 700 NoSafepointScope no_safepoint_scope; |
| 701 RawObject* raw_obj = arguments->NativeArgAt(arg_index); | 701 RawObject* raw_obj = arguments->NativeArgAt(arg_index); |
| 702 if (raw_obj->IsHeapObject()) { | 702 if (raw_obj->IsHeapObject()) { |
| 703 intptr_t cid = raw_obj->GetClassId(); | 703 intptr_t cid = raw_obj->GetClassId(); |
| 704 if (cid > kNumPredefinedCids) { | 704 if (cid >= kNumPredefinedCids) { |
| 705 RawTypedData* native_fields = *reinterpret_cast<RawTypedData**>( | 705 RawTypedData* native_fields = *reinterpret_cast<RawTypedData**>( |
| 706 RawObject::ToAddr(raw_obj) + sizeof(RawObject)); | 706 RawObject::ToAddr(raw_obj) + sizeof(RawObject)); |
| 707 if (native_fields == TypedData::null()) { | 707 if (native_fields == TypedData::null()) { |
| 708 memset(field_values, 0, (num_fields * sizeof(field_values[0]))); | 708 memset(field_values, 0, (num_fields * sizeof(field_values[0]))); |
| 709 } else if (num_fields == Smi::Value(native_fields->ptr()->length_)) { | 709 } else if (num_fields == Smi::Value(native_fields->ptr()->length_)) { |
| 710 intptr_t* native_values = | 710 intptr_t* native_values = |
| 711 bit_cast<intptr_t*, uint8_t*>(native_fields->ptr()->data()); | 711 bit_cast<intptr_t*, uint8_t*>(native_fields->ptr()->data()); |
| 712 memmove(field_values, | 712 memmove(field_values, |
| 713 native_values, | 713 native_values, |
| 714 (num_fields * sizeof(field_values[0]))); | 714 (num_fields * sizeof(field_values[0]))); |
| (...skipping 5906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6621 | 6621 |
| 6622 DART_EXPORT bool Dart_IsPrecompiledRuntime() { | 6622 DART_EXPORT bool Dart_IsPrecompiledRuntime() { |
| 6623 #if defined(DART_PRECOMPILED_RUNTIME) | 6623 #if defined(DART_PRECOMPILED_RUNTIME) |
| 6624 return true; | 6624 return true; |
| 6625 #else | 6625 #else |
| 6626 return false; | 6626 return false; |
| 6627 #endif | 6627 #endif |
| 6628 } | 6628 } |
| 6629 | 6629 |
| 6630 } // namespace dart | 6630 } // namespace dart |
| OLD | NEW |