Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: runtime/vm/object_test.cc

Issue 11348259: Canonicalize all integer constants taht we create by parsing a string. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/snapshot_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/snapshot_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698