Chromium Code Reviews| Index: src/compiler/code-stub-assembler.h | 
| diff --git a/src/compiler/code-stub-assembler.h b/src/compiler/code-stub-assembler.h | 
| index 2ab13764c46acdb4e67bcc78cf9306d832e57e30..c50f2e5565ea7f1835cef139c0aa798a14c015c4 100644 | 
| --- a/src/compiler/code-stub-assembler.h | 
| +++ b/src/compiler/code-stub-assembler.h | 
| @@ -68,6 +68,27 @@ class Schedule; | 
| V(Word64Ror) \ | 
| V(UintPtrGreaterThanOrEqual) | 
| +enum AllocationFlags : uint8_t { | 
| 
 
Benedikt Meurer
2016/02/25 13:00:40
Can you move this into the CodeStubAssembler?
 
epertoso
2016/02/25 13:26:54
Done.
 
 | 
| + kNone = 0, | 
| + kTagObject = 1, | 
| 
 
Benedikt Meurer
2016/02/25 13:00:41
Don't add kTagObject here. This is terrible in the
 
epertoso
2016/02/25 13:26:54
OK.
 
 | 
| + kDoubleAlignment = 1 << 1, | 
| + kPretenured = 1 << 2 | 
| +}; | 
| + | 
| +inline AllocationFlags operator|(AllocationFlags lhs, AllocationFlags rhs) { | 
| 
 
Benedikt Meurer
2016/02/25 13:00:40
Use base::Flags and DEFINE_OPERATORS_FOR_FLAGS her
 
epertoso
2016/02/25 13:26:53
Done.
 
 | 
| + return static_cast<AllocationFlags>(static_cast<uint8_t>(lhs) | | 
| + static_cast<uint8_t>(rhs)); | 
| +} | 
| + | 
| +inline AllocationFlags operator&(AllocationFlags lhs, AllocationFlags rhs) { | 
| + return static_cast<AllocationFlags>(static_cast<uint8_t>(lhs) & | 
| + static_cast<uint8_t>(rhs)); | 
| +} | 
| + | 
| +inline AllocationFlags operator~(AllocationFlags arg) { | 
| + return static_cast<AllocationFlags>(~static_cast<uint8_t>(arg)); | 
| +} | 
| + | 
| class CodeStubAssembler { | 
| public: | 
| // |result_size| specifies the number of results returned by the stub. | 
| @@ -211,6 +232,9 @@ class CodeStubAssembler { | 
| int additional_offset = 0); | 
| Node* LoadFixedArrayElementConstantIndex(Node* object, int index); | 
| + // Allocate in new space. | 
| + Node* Allocate(int size, AllocationFlags flags); | 
| + | 
| protected: | 
| // Protected helpers which delegate to RawMachineAssembler. | 
| Graph* graph(); | 
| @@ -229,6 +253,11 @@ class CodeStubAssembler { | 
| Node* SmiShiftBitsConstant(); | 
| + Node* AllocateRawAligned(Node* size_in_bytes, AllocationFlags flags, | 
| + Node* top_address, Node* limit_address); | 
| + Node* AllocateRawUnaligned(Node* size_in_bytes, AllocationFlags flags, | 
| + Node* top_adddress, Node* limit_address); | 
| + | 
| base::SmartPointer<RawMachineAssembler> raw_assembler_; | 
| Code::Flags flags_; | 
| const char* name_; |