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 "include/dart_api.h" | 5 #include "include/dart_api.h" |
6 | 6 |
7 #include "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
8 #include "vm/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
10 #include "vm/dart.h" | 10 #include "vm/dart.h" |
(...skipping 937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
948 if (int_obj.IsNull()) { | 948 if (int_obj.IsNull()) { |
949 RETURN_TYPE_ERROR(integer, Integer); | 949 RETURN_TYPE_ERROR(integer, Integer); |
950 } | 950 } |
951 if (int_obj.IsSmi() || int_obj.IsMint()) { | 951 if (int_obj.IsSmi() || int_obj.IsMint()) { |
952 *fits = true; | 952 *fits = true; |
953 } else { | 953 } else { |
954 ASSERT(int_obj.IsBigint()); | 954 ASSERT(int_obj.IsBigint()); |
955 #if defined(DEBUG) | 955 #if defined(DEBUG) |
956 Bigint& bigint = Bigint::Handle(); | 956 Bigint& bigint = Bigint::Handle(); |
957 bigint ^= int_obj.raw(); | 957 bigint ^= int_obj.raw(); |
958 ASSERT(!BigintOperations::FitsIntoInt64(bigint)); | 958 ASSERT(!BigintOperations::FitsIntoMint(bigint)); |
959 #endif | 959 #endif |
960 *fits = false; | 960 *fits = false; |
961 } | 961 } |
962 return Api::Success(); | 962 return Api::Success(); |
963 } | 963 } |
964 | 964 |
965 | 965 |
966 DART_EXPORT Dart_Handle Dart_IntegerFitsIntoUint64(Dart_Handle integer, | 966 DART_EXPORT Dart_Handle Dart_IntegerFitsIntoUint64(Dart_Handle integer, |
967 bool* fits) { | 967 bool* fits) { |
968 DARTSCOPE(Isolate::Current()); | 968 DARTSCOPE(Isolate::Current()); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 if (int_obj.IsNull()) { | 1004 if (int_obj.IsNull()) { |
1005 RETURN_TYPE_ERROR(integer, Integer); | 1005 RETURN_TYPE_ERROR(integer, Integer); |
1006 } | 1006 } |
1007 if (int_obj.IsSmi() || int_obj.IsMint()) { | 1007 if (int_obj.IsSmi() || int_obj.IsMint()) { |
1008 *value = int_obj.AsInt64Value(); | 1008 *value = int_obj.AsInt64Value(); |
1009 return Api::Success(); | 1009 return Api::Success(); |
1010 } else { | 1010 } else { |
1011 ASSERT(int_obj.IsBigint()); | 1011 ASSERT(int_obj.IsBigint()); |
1012 Bigint& bigint = Bigint::Handle(); | 1012 Bigint& bigint = Bigint::Handle(); |
1013 bigint ^= int_obj.raw(); | 1013 bigint ^= int_obj.raw(); |
1014 if (BigintOperations::FitsIntoInt64(bigint)) { | 1014 if (BigintOperations::FitsIntoMint(bigint)) { |
1015 *value = BigintOperations::ToInt64(bigint); | 1015 *value = BigintOperations::ToMint(bigint); |
1016 return Api::Success(); | 1016 return Api::Success(); |
1017 } | 1017 } |
1018 } | 1018 } |
1019 return Api::NewError("%s: Integer %s cannot be represented as an int64_t.", | 1019 return Api::NewError("%s: Integer %s cannot be represented as an int64_t.", |
1020 CURRENT_FUNC, int_obj.ToCString()); | 1020 CURRENT_FUNC, int_obj.ToCString()); |
1021 } | 1021 } |
1022 | 1022 |
1023 | 1023 |
1024 DART_EXPORT Dart_Handle Dart_IntegerToUint64(Dart_Handle integer, | 1024 DART_EXPORT Dart_Handle Dart_IntegerToUint64(Dart_Handle integer, |
1025 uint64_t* value) { | 1025 uint64_t* value) { |
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1449 const Object& retval = Object::Handle( | 1449 const Object& retval = Object::Handle( |
1450 DartEntry::InvokeDynamic(instance, function, args, kNoArgumentNames)); | 1450 DartEntry::InvokeDynamic(instance, function, args, kNoArgumentNames)); |
1451 if (retval.IsSmi() || retval.IsMint()) { | 1451 if (retval.IsSmi() || retval.IsMint()) { |
1452 Integer& integer = Integer::Handle(); | 1452 Integer& integer = Integer::Handle(); |
1453 integer ^= retval.raw(); | 1453 integer ^= retval.raw(); |
1454 *len = integer.AsInt64Value(); | 1454 *len = integer.AsInt64Value(); |
1455 return Api::Success(); | 1455 return Api::Success(); |
1456 } else if (retval.IsBigint()) { | 1456 } else if (retval.IsBigint()) { |
1457 Bigint& bigint = Bigint::Handle(); | 1457 Bigint& bigint = Bigint::Handle(); |
1458 bigint ^= retval.raw(); | 1458 bigint ^= retval.raw(); |
1459 if (BigintOperations::FitsIntoInt64(bigint)) { | 1459 if (BigintOperations::FitsIntoMint(bigint)) { |
1460 *len = BigintOperations::ToInt64(bigint); | 1460 *len = BigintOperations::ToMint(bigint); |
1461 return Api::Success(); | 1461 return Api::Success(); |
1462 } else { | 1462 } else { |
1463 return Api::NewError("Length of List object is greater than the " | 1463 return Api::NewError("Length of List object is greater than the " |
1464 "maximum value that 'len' parameter can hold"); | 1464 "maximum value that 'len' parameter can hold"); |
1465 } | 1465 } |
1466 } else if (retval.IsError()) { | 1466 } else if (retval.IsError()) { |
1467 return Api::NewLocalHandle(retval); | 1467 return Api::NewLocalHandle(retval); |
1468 } else { | 1468 } else { |
1469 return Api::NewError("Length of List object is not an integer"); | 1469 return Api::NewError("Length of List object is not an integer"); |
1470 } | 1470 } |
(...skipping 1239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2710 *buffer = NULL; | 2710 *buffer = NULL; |
2711 } | 2711 } |
2712 delete debug_region; | 2712 delete debug_region; |
2713 } else { | 2713 } else { |
2714 *buffer = NULL; | 2714 *buffer = NULL; |
2715 *buffer_size = 0; | 2715 *buffer_size = 0; |
2716 } | 2716 } |
2717 } | 2717 } |
2718 | 2718 |
2719 } // namespace dart | 2719 } // namespace dart |
OLD | NEW |