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

Side by Side Diff: src/builtins.cc

Issue 669162: An attempt to fix the tests. (Closed)
Patch Set: Created 10 years, 9 months 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
« no previous file with comments | « no previous file | test/mjsunit/array-splice.js » ('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 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 MoveElements(&no_gc, 658 MoveElements(&no_gc,
659 elms, actual_start + item_count, 659 elms, actual_start + item_count,
660 elms, actual_start + actual_delete_count, 660 elms, actual_start + actual_delete_count,
661 (len - actual_delete_count - actual_start)); 661 (len - actual_delete_count - actual_start));
662 FillWithHoles(elms, new_length, len); 662 FillWithHoles(elms, new_length, len);
663 } else if (item_count > actual_delete_count) { 663 } else if (item_count > actual_delete_count) {
664 // Currently fixed arrays cannot grow too big, so 664 // Currently fixed arrays cannot grow too big, so
665 // we should never hit this case. 665 // we should never hit this case.
666 ASSERT((item_count - actual_delete_count) <= (Smi::kMaxValue - len)); 666 ASSERT((item_count - actual_delete_count) <= (Smi::kMaxValue - len));
667 667
668 FixedArray* source_elms = elms;
669
670 // Check if array need to grow. 668 // Check if array need to grow.
671 if (new_length > elms->length()) { 669 if (new_length > elms->length()) {
672 // New backing storage is needed. 670 // New backing storage is needed.
673 int capacity = new_length + (new_length >> 1) + 16; 671 int capacity = new_length + (new_length >> 1) + 16;
674 Object* obj = Heap::AllocateUninitializedFixedArray(capacity); 672 Object* obj = Heap::AllocateUninitializedFixedArray(capacity);
675 if (obj->IsFailure()) return obj; 673 if (obj->IsFailure()) return obj;
676 FixedArray* new_elms = FixedArray::cast(obj); 674 FixedArray* new_elms = FixedArray::cast(obj);
677 675
678 AssertNoAllocation no_gc; 676 AssertNoAllocation no_gc;
679 // Copy the part before actual_start as is. 677 // Copy the part before actual_start as is.
680 CopyElements(&no_gc, new_elms, 0, elms, 0, actual_start); 678 CopyElements(&no_gc, new_elms, 0, elms, 0, actual_start);
679 CopyElements(&no_gc,
680 new_elms, actual_start + item_count,
681 elms, actual_start + actual_delete_count,
682 (len - actual_delete_count - actual_start));
681 FillWithHoles(new_elms, new_length, capacity); 683 FillWithHoles(new_elms, new_length, capacity);
682 684
683 source_elms = elms;
684 elms = new_elms; 685 elms = new_elms;
685 array->set_elements(elms); 686 array->set_elements(elms);
687 } else {
688 AssertNoAllocation no_gc;
689 MoveElements(&no_gc,
690 elms, actual_start + item_count,
691 elms, actual_start + actual_delete_count,
692 (len - actual_delete_count - actual_start));
686 } 693 }
687
688 AssertNoAllocation no_gc;
689 MoveElements(&no_gc,
690 elms, actual_start + item_count,
691 source_elms, actual_start + actual_delete_count,
692 (len - actual_delete_count - actual_start));
693 } 694 }
694 695
695 AssertNoAllocation no_gc; 696 AssertNoAllocation no_gc;
696 WriteBarrierMode mode = elms->GetWriteBarrierMode(no_gc); 697 WriteBarrierMode mode = elms->GetWriteBarrierMode(no_gc);
697 for (int k = actual_start; k < actual_start + item_count; k++) { 698 for (int k = actual_start; k < actual_start + item_count; k++) {
698 elms->set(k, args[3 + k - actual_start], mode); 699 elms->set(k, args[3 + k - actual_start], mode);
699 } 700 }
700 701
701 // Set the length. 702 // Set the length.
702 array->set_length(Smi::FromInt(new_length)); 703 array->set_length(Smi::FromInt(new_length));
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
1349 if (entry->contains(pc)) { 1350 if (entry->contains(pc)) {
1350 return names_[i]; 1351 return names_[i];
1351 } 1352 }
1352 } 1353 }
1353 } 1354 }
1354 return NULL; 1355 return NULL;
1355 } 1356 }
1356 1357
1357 1358
1358 } } // namespace v8::internal 1359 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/array-splice.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698