| 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 "platform/assert.h" | 5 #include "platform/assert.h" |
| 6 #include "vm/assembler.h" | 6 #include "vm/assembler.h" |
| 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/isolate.h" | 9 #include "vm/isolate.h" |
| 10 #include "vm/object.h" | 10 #include "vm/object.h" |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 // be allocated if it does fit into a Smi. | 321 // be allocated if it does fit into a Smi. |
| 322 #if !defined(ARCH_IS_64_BIT) | 322 #if !defined(ARCH_IS_64_BIT) |
| 323 { Mint& med = Mint::Handle(); | 323 { Mint& med = Mint::Handle(); |
| 324 EXPECT(med.IsNull()); | 324 EXPECT(med.IsNull()); |
| 325 int64_t v = DART_2PART_UINT64_C(1, 0); | 325 int64_t v = DART_2PART_UINT64_C(1, 0); |
| 326 med = Mint::New(v); | 326 med = Mint::New(v); |
| 327 EXPECT_EQ(v, med.value()); | 327 EXPECT_EQ(v, med.value()); |
| 328 const String& smi_str = String::Handle(String::New("1")); | 328 const String& smi_str = String::Handle(String::New("1")); |
| 329 const String& mint1_str = String::Handle(String::New("2147419168")); | 329 const String& mint1_str = String::Handle(String::New("2147419168")); |
| 330 const String& mint2_str = String::Handle(String::New("-2147419168")); | 330 const String& mint2_str = String::Handle(String::New("-2147419168")); |
| 331 Integer& i = Integer::Handle(Integer::New(smi_str)); | 331 Integer& i = Integer::Handle(Integer::NewCanonical(smi_str)); |
| 332 EXPECT(i.IsSmi()); | 332 EXPECT(i.IsSmi()); |
| 333 i = Integer::New(mint1_str); | 333 i = Integer::NewCanonical(mint1_str); |
| 334 EXPECT(i.IsMint()); | 334 EXPECT(i.IsMint()); |
| 335 EXPECT(!i.IsZero()); | 335 EXPECT(!i.IsZero()); |
| 336 EXPECT(!i.IsNegative()); | 336 EXPECT(!i.IsNegative()); |
| 337 i = Integer::New(mint2_str); | 337 i = Integer::NewCanonical(mint2_str); |
| 338 EXPECT(i.IsMint()); | 338 EXPECT(i.IsMint()); |
| 339 EXPECT(!i.IsZero()); | 339 EXPECT(!i.IsZero()); |
| 340 EXPECT(i.IsNegative()); | 340 EXPECT(i.IsNegative()); |
| 341 } | 341 } |
| 342 Integer& i = Integer::Handle(Mint::New(DART_2PART_UINT64_C(1, 0))); | 342 Integer& i = Integer::Handle(Mint::New(DART_2PART_UINT64_C(1, 0))); |
| 343 EXPECT(i.IsMint()); | 343 EXPECT(i.IsMint()); |
| 344 EXPECT(!i.IsZero()); | 344 EXPECT(!i.IsZero()); |
| 345 EXPECT(!i.IsNegative()); | 345 EXPECT(!i.IsNegative()); |
| 346 Integer& i1 = Integer::Handle(Mint::New(DART_2PART_UINT64_C(1010, 0))); | 346 Integer& i1 = Integer::Handle(Mint::New(DART_2PART_UINT64_C(1010, 0))); |
| 347 Mint& i2 = Mint::Handle(Mint::New(DART_2PART_UINT64_C(1010, 0))); | 347 Mint& i2 = Mint::Handle(Mint::New(DART_2PART_UINT64_C(1010, 0))); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 EXPECT(dbl2.IsNull()); | 449 EXPECT(dbl2.IsNull()); |
| 450 } | 450 } |
| 451 } | 451 } |
| 452 | 452 |
| 453 | 453 |
| 454 TEST_CASE(Bigint) { | 454 TEST_CASE(Bigint) { |
| 455 Bigint& b = Bigint::Handle(); | 455 Bigint& b = Bigint::Handle(); |
| 456 EXPECT(b.IsNull()); | 456 EXPECT(b.IsNull()); |
| 457 const char* cstr = "18446744073709551615000"; | 457 const char* cstr = "18446744073709551615000"; |
| 458 const String& test = String::Handle(String::New(cstr)); | 458 const String& test = String::Handle(String::New(cstr)); |
| 459 b = Bigint::New(test); | 459 b = Bigint::NewCanonical(test); |
| 460 const char* str = b.ToCString(); | 460 const char* str = b.ToCString(); |
| 461 EXPECT_STREQ(cstr, str); | 461 EXPECT_STREQ(cstr, str); |
| 462 | 462 |
| 463 int64_t t64 = DART_2PART_UINT64_C(1, 0); | 463 int64_t t64 = DART_2PART_UINT64_C(1, 0); |
| 464 Bigint& big = Bigint::Handle(); | 464 Bigint& big = Bigint::Handle(); |
| 465 big = BigintOperations::NewFromInt64(t64); | 465 big = BigintOperations::NewFromInt64(t64); |
| 466 EXPECT_EQ(t64, big.AsInt64Value()); | 466 EXPECT_EQ(t64, big.AsInt64Value()); |
| 467 big = BigintOperations::NewFromCString("10000000000000000000"); | 467 big = BigintOperations::NewFromCString("10000000000000000000"); |
| 468 EXPECT_EQ(1e19, big.AsDoubleValue()); | 468 EXPECT_EQ(1e19, big.AsDoubleValue()); |
| 469 | 469 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 486 EXPECT_EQ(-1, smi1.CompareWith(big1)); | 486 EXPECT_EQ(-1, smi1.CompareWith(big1)); |
| 487 EXPECT_EQ(-1, smi2.CompareWith(big1)); | 487 EXPECT_EQ(-1, smi2.CompareWith(big1)); |
| 488 | 488 |
| 489 EXPECT_EQ(1, smi1.CompareWith(big3)); | 489 EXPECT_EQ(1, smi1.CompareWith(big3)); |
| 490 EXPECT_EQ(1, smi2.CompareWith(big3)); | 490 EXPECT_EQ(1, smi2.CompareWith(big3)); |
| 491 } | 491 } |
| 492 | 492 |
| 493 | 493 |
| 494 TEST_CASE(Integer) { | 494 TEST_CASE(Integer) { |
| 495 Integer& i = Integer::Handle(); | 495 Integer& i = Integer::Handle(); |
| 496 i = Integer::New(String::Handle(String::New("12"))); | 496 i = Integer::NewCanonical(String::Handle(String::New("12"))); |
| 497 EXPECT(i.IsSmi()); | 497 EXPECT(i.IsSmi()); |
| 498 i = Integer::New(String::Handle(String::New("-120"))); | 498 i = Integer::NewCanonical(String::Handle(String::New("-120"))); |
| 499 EXPECT(i.IsSmi()); | 499 EXPECT(i.IsSmi()); |
| 500 i = Integer::New(String::Handle(String::New("0"))); | 500 i = Integer::NewCanonical(String::Handle(String::New("0"))); |
| 501 EXPECT(i.IsSmi()); | 501 EXPECT(i.IsSmi()); |
| 502 i = Integer::New(String::Handle(String::New("12345678901234567890"))); | 502 i = Integer::NewCanonical( |
| 503 String::Handle(String::New("12345678901234567890"))); |
| 503 EXPECT(i.IsBigint()); | 504 EXPECT(i.IsBigint()); |
| 504 i = Integer::New(String::Handle(String::New("-12345678901234567890111222"))); | 505 i = Integer::NewCanonical( |
| 506 String::Handle(String::New("-12345678901234567890111222"))); |
| 505 EXPECT(i.IsBigint()); | 507 EXPECT(i.IsBigint()); |
| 506 } | 508 } |
| 507 | 509 |
| 508 | 510 |
| 509 TEST_CASE(String) { | 511 TEST_CASE(String) { |
| 510 const char* kHello = "Hello World!"; | 512 const char* kHello = "Hello World!"; |
| 511 int32_t hello_len = strlen(kHello); | 513 int32_t hello_len = strlen(kHello); |
| 512 const String& str = String::Handle(String::New(kHello)); | 514 const String& str = String::Handle(String::New(kHello)); |
| 513 EXPECT(str.IsInstance()); | 515 EXPECT(str.IsInstance()); |
| 514 EXPECT(str.IsString()); | 516 EXPECT(str.IsString()); |
| (...skipping 2731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3246 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 3248 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); |
| 3247 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 3249 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); |
| 3248 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 3250 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); |
| 3249 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 3251 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); |
| 3250 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 3252 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); |
| 3251 } | 3253 } |
| 3252 | 3254 |
| 3253 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 3255 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 3254 | 3256 |
| 3255 } // namespace dart | 3257 } // namespace dart |
| OLD | NEW |