OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
7 | 7 |
8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
9 #include "src/globals.h" | 9 #include "src/globals.h" |
10 #include "src/mips/assembler-mips.h" | 10 #include "src/mips/assembler-mips.h" |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 | 548 |
549 // FastAllocate is right now only used for folded allocations. It just | 549 // FastAllocate is right now only used for folded allocations. It just |
550 // increments the top pointer without checking against limit. This can only | 550 // increments the top pointer without checking against limit. This can only |
551 // be done if it was proved earlier that the allocation will succeed. | 551 // be done if it was proved earlier that the allocation will succeed. |
552 void FastAllocate(int object_size, Register result, Register scratch1, | 552 void FastAllocate(int object_size, Register result, Register scratch1, |
553 Register scratch2, AllocationFlags flags); | 553 Register scratch2, AllocationFlags flags); |
554 | 554 |
555 void FastAllocate(Register object_size, Register result, Register result_new, | 555 void FastAllocate(Register object_size, Register result, Register result_new, |
556 Register scratch, AllocationFlags flags); | 556 Register scratch, AllocationFlags flags); |
557 | 557 |
558 void AllocateTwoByteString(Register result, | |
559 Register length, | |
560 Register scratch1, | |
561 Register scratch2, | |
562 Register scratch3, | |
563 Label* gc_required); | |
564 void AllocateOneByteString(Register result, Register length, | |
565 Register scratch1, Register scratch2, | |
566 Register scratch3, Label* gc_required); | |
567 void AllocateTwoByteConsString(Register result, | |
568 Register length, | |
569 Register scratch1, | |
570 Register scratch2, | |
571 Label* gc_required); | |
572 void AllocateOneByteConsString(Register result, Register length, | |
573 Register scratch1, Register scratch2, | |
574 Label* gc_required); | |
575 void AllocateTwoByteSlicedString(Register result, | |
576 Register length, | |
577 Register scratch1, | |
578 Register scratch2, | |
579 Label* gc_required); | |
580 void AllocateOneByteSlicedString(Register result, Register length, | |
581 Register scratch1, Register scratch2, | |
582 Label* gc_required); | |
583 | |
584 // Allocates a heap number or jumps to the gc_required label if the young | 558 // Allocates a heap number or jumps to the gc_required label if the young |
585 // space is full and a scavenge is needed. All registers are clobbered also | 559 // space is full and a scavenge is needed. All registers are clobbered also |
586 // when control continues at the gc_required label. | 560 // when control continues at the gc_required label. |
587 void AllocateHeapNumber(Register result, | 561 void AllocateHeapNumber(Register result, |
588 Register scratch1, | 562 Register scratch1, |
589 Register scratch2, | 563 Register scratch2, |
590 Register heap_number_map, | 564 Register heap_number_map, |
591 Label* gc_required, | 565 Label* gc_required, |
592 MutableMode mode = IMMUTABLE); | 566 MutableMode mode = IMMUTABLE); |
593 void AllocateHeapNumberWithValue(Register result, | 567 void AllocateHeapNumberWithValue(Register result, |
(...skipping 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1604 | 1578 |
1605 // ------------------------------------------------------------------------- | 1579 // ------------------------------------------------------------------------- |
1606 // String utilities. | 1580 // String utilities. |
1607 | 1581 |
1608 // Checks if both instance types are sequential ASCII strings and jumps to | 1582 // Checks if both instance types are sequential ASCII strings and jumps to |
1609 // label if either is not. | 1583 // label if either is not. |
1610 void JumpIfBothInstanceTypesAreNotSequentialOneByte( | 1584 void JumpIfBothInstanceTypesAreNotSequentialOneByte( |
1611 Register first_object_instance_type, Register second_object_instance_type, | 1585 Register first_object_instance_type, Register second_object_instance_type, |
1612 Register scratch1, Register scratch2, Label* failure); | 1586 Register scratch1, Register scratch2, Label* failure); |
1613 | 1587 |
1614 // Check if instance type is sequential one-byte string and jump to label if | |
1615 // it is not. | |
1616 void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch, | |
1617 Label* failure); | |
1618 | |
1619 void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name); | 1588 void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name); |
1620 | 1589 |
1621 void EmitSeqStringSetCharCheck(Register string, | 1590 void EmitSeqStringSetCharCheck(Register string, |
1622 Register index, | 1591 Register index, |
1623 Register value, | 1592 Register value, |
1624 Register scratch, | 1593 Register scratch, |
1625 uint32_t encoding_mask); | 1594 uint32_t encoding_mask); |
1626 | 1595 |
1627 // Checks if both objects are sequential one-byte strings and jumps to label | 1596 // Checks if both objects are sequential one-byte strings and jumps to label |
1628 // if either is not. Assumes that neither object is a smi. | 1597 // if either is not. Assumes that neither object is a smi. |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1859 dd(GetLabelFunction(index)); | 1828 dd(GetLabelFunction(index)); |
1860 } | 1829 } |
1861 } | 1830 } |
1862 | 1831 |
1863 #define ACCESS_MASM(masm) masm-> | 1832 #define ACCESS_MASM(masm) masm-> |
1864 | 1833 |
1865 } // namespace internal | 1834 } // namespace internal |
1866 } // namespace v8 | 1835 } // namespace v8 |
1867 | 1836 |
1868 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 1837 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
OLD | NEW |