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

Side by Side Diff: src/ppc/macro-assembler-ppc.h

Issue 1472473003: PPC: Fix object initialization when slack tracking for it's map is still enabled. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_ 5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_
6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ 6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/frames.h" 10 #include "src/frames.h"
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 // Allocate an object in new space or old space. The object_size is 637 // Allocate an object in new space or old space. The object_size is
638 // specified either in bytes or in words if the allocation flag SIZE_IN_WORDS 638 // specified either in bytes or in words if the allocation flag SIZE_IN_WORDS
639 // is passed. If the space is exhausted control continues at the gc_required 639 // is passed. If the space is exhausted control continues at the gc_required
640 // label. The allocated object is returned in result. If the flag 640 // label. The allocated object is returned in result. If the flag
641 // tag_allocated_object is true the result is tagged as as a heap object. 641 // tag_allocated_object is true the result is tagged as as a heap object.
642 // All registers are clobbered also when control continues at the gc_required 642 // All registers are clobbered also when control continues at the gc_required
643 // label. 643 // label.
644 void Allocate(int object_size, Register result, Register scratch1, 644 void Allocate(int object_size, Register result, Register scratch1,
645 Register scratch2, Label* gc_required, AllocationFlags flags); 645 Register scratch2, Label* gc_required, AllocationFlags flags);
646 646
647 void Allocate(Register object_size, Register result, Register scratch1, 647 void Allocate(Register object_size, Register result, Register result_end,
648 Register scratch2, Label* gc_required, AllocationFlags flags); 648 Register scratch, Label* gc_required, AllocationFlags flags);
649 649
650 void AllocateTwoByteString(Register result, Register length, 650 void AllocateTwoByteString(Register result, Register length,
651 Register scratch1, Register scratch2, 651 Register scratch1, Register scratch2,
652 Register scratch3, Label* gc_required); 652 Register scratch3, Label* gc_required);
653 void AllocateOneByteString(Register result, Register length, 653 void AllocateOneByteString(Register result, Register length,
654 Register scratch1, Register scratch2, 654 Register scratch1, Register scratch2,
655 Register scratch3, Label* gc_required); 655 Register scratch3, Label* gc_required);
656 void AllocateTwoByteConsString(Register result, Register length, 656 void AllocateTwoByteConsString(Register result, Register length,
657 Register scratch1, Register scratch2, 657 Register scratch1, Register scratch2,
658 Label* gc_required); 658 Label* gc_required);
(...skipping 21 matching lines...) Expand all
680 680
681 // Copies a fixed number of fields of heap objects from src to dst. 681 // Copies a fixed number of fields of heap objects from src to dst.
682 void CopyFields(Register dst, Register src, RegList temps, int field_count); 682 void CopyFields(Register dst, Register src, RegList temps, int field_count);
683 683
684 // Copies a number of bytes from src to dst. All registers are clobbered. On 684 // Copies a number of bytes from src to dst. All registers are clobbered. On
685 // exit src and dst will point to the place just after where the last byte was 685 // exit src and dst will point to the place just after where the last byte was
686 // read or written and length will be zero. 686 // read or written and length will be zero.
687 void CopyBytes(Register src, Register dst, Register length, Register scratch); 687 void CopyBytes(Register src, Register dst, Register length, Register scratch);
688 688
689 // Initialize fields with filler values. |count| fields starting at 689 // Initialize fields with filler values. |count| fields starting at
690 // |start_offset| are overwritten with the value in |filler|. At the end the 690 // |current_address| are overwritten with the value in |filler|. At the end
691 // loop, |start_offset| points at the next uninitialized field. |count| is 691 // the loop, |current_address| points at the next uninitialized field.
692 // assumed to be non-zero. 692 // |count| is assumed to be non-zero.
693 void InitializeNFieldsWithFiller(Register start_offset, Register count, 693 void InitializeNFieldsWithFiller(Register current_address, Register count,
694 Register filler); 694 Register filler);
695 695
696 // Initialize fields with filler values. Fields starting at |start_offset| 696 // Initialize fields with filler values. Fields starting at |current_address|
697 // not including end_offset are overwritten with the value in |filler|. At 697 // not including |end_address| are overwritten with the value in |filler|. At
698 // the end the loop, |start_offset| takes the value of |end_offset|. 698 // the end the loop, |current_address| takes the value of |end_address|.
699 void InitializeFieldsWithFiller(Register start_offset, Register end_offset, 699 void InitializeFieldsWithFiller(Register current_address,
700 Register filler); 700 Register end_address, Register filler);
701 701
702 // --------------------------------------------------------------------------- 702 // ---------------------------------------------------------------------------
703 // Support functions. 703 // Support functions.
704 704
705 // Machine code version of Map::GetConstructor(). 705 // Machine code version of Map::GetConstructor().
706 // |temp| holds |result|'s map when done, and |temp2| its instance type. 706 // |temp| holds |result|'s map when done, and |temp2| its instance type.
707 void GetMapConstructor(Register result, Register map, Register temp, 707 void GetMapConstructor(Register result, Register map, Register temp,
708 Register temp2); 708 Register temp2);
709 709
710 // Try to get function prototype of a function and puts the value in 710 // Try to get function prototype of a function and puts the value in
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1574 #define ACCESS_MASM(masm) \ 1574 #define ACCESS_MASM(masm) \
1575 masm->stop(__FILE_LINE__); \ 1575 masm->stop(__FILE_LINE__); \
1576 masm-> 1576 masm->
1577 #else 1577 #else
1578 #define ACCESS_MASM(masm) masm-> 1578 #define ACCESS_MASM(masm) masm->
1579 #endif 1579 #endif
1580 } // namespace internal 1580 } // namespace internal
1581 } // namespace v8 1581 } // namespace v8
1582 1582
1583 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ 1583 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698