OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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_ |
OLD | NEW |