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 4d52065fcf706fc661564d851e14ca04bc6c8af2..9ce8aedaa3f5e426cb2171d022000feaf63b7f0e 100644 |
| --- a/src/compiler/code-stub-assembler.h |
| +++ b/src/compiler/code-stub-assembler.h |
| @@ -43,6 +43,7 @@ class Schedule; |
| V(Int32Sub) \ |
| V(Int32Mul) \ |
| V(Int32GreaterThanOrEqual) \ |
| + V(Int32LessThan) \ |
| V(WordEqual) \ |
| V(WordNotEqual) \ |
| V(WordOr) \ |
| @@ -71,14 +72,25 @@ class Schedule; |
| V(Word64Ror) \ |
| V(UintPtrGreaterThanOrEqual) |
| +#define CODE_STUB_ASSEMBLER_UNARY_OP_LIST(V) \ |
| + V(ChangeFloat64ToUint32) \ |
| + V(ChangeInt32ToInt64) \ |
| + V(ChangeUint32ToFloat64) |
| + |
| class CodeStubAssembler { |
| public: |
| + // Create with CallStub linkage. |
| // |result_size| specifies the number of results returned by the stub. |
| // TODO(rmcilroy): move result_size to the CallInterfaceDescriptor. |
| CodeStubAssembler(Isolate* isolate, Zone* zone, |
| const CallInterfaceDescriptor& descriptor, |
| Code::Flags flags, const char* name, |
| size_t result_size = 1); |
| + |
| + // Create with JSCall linkage. |
| + CodeStubAssembler(Isolate* isolate, Zone* zone, int parameter_count, |
| + Code::Flags flags, const char* name); |
| + |
| virtual ~CodeStubAssembler(); |
| Handle<Code> GenerateCode(); |
| @@ -148,7 +160,9 @@ class CodeStubAssembler { |
| Node* WordShl(Node* value, int shift); |
| // Conversions |
| - Node* ChangeInt32ToInt64(Node* value); |
| +#define DECLARE_CODE_STUB_ASSEMBER_UNARY_OP(name) Node* name(Node* a); |
| + CODE_STUB_ASSEMBLER_UNARY_OP_LIST(DECLARE_CODE_STUB_ASSEMBER_UNARY_OP) |
| +#undef DECLARE_CODE_STUB_ASSEMBER_UNARY_OP |
| // Projections |
| Node* Projection(int index, Node* value); |
| @@ -165,6 +179,7 @@ class CodeStubAssembler { |
| Node* CallRuntime(Runtime::FunctionId function_id, Node* context, Node* arg1, |
| Node* arg2, Node* arg3, Node* arg4, Node* arg5); |
| + Node* TailCallRuntime(Runtime::FunctionId function_id, Node* context); |
| Node* TailCallRuntime(Runtime::FunctionId function_id, Node* context, |
| Node* arg1); |
| Node* TailCallRuntime(Runtime::FunctionId function_id, Node* context, |
| @@ -196,9 +211,12 @@ class CodeStubAssembler { |
| // Macros |
| // =========================================================================== |
| - // Tag and untag Smi values. |
| + // Tag a Word as a Smi value. |
| Node* SmiTag(Node* value); |
| + // Untag a Smi value as a Word. |
| Node* SmiUntag(Node* value); |
| + // Untag an Smi value as a 32-bit value. |
| + Node* SmiUntag32(Node* value); |
|
Benedikt Meurer
2016/03/01 04:54:44
Nit: Rename to SmiToInt32
binji
2016/03/01 21:56:38
Done.
|
| // Smi operations. |
| Node* SmiAdd(Node* a, Node* b); |
| @@ -214,12 +232,24 @@ class CodeStubAssembler { |
| Node* LoadBufferObject(Node* buffer, int offset); |
| // Load a field from an object on the heap. |
| Node* LoadObjectField(Node* object, int offset); |
| + // Load the HeapNumber value from a HeapNumber object. |
| + Node* LoadHeapNumber(Node* object); |
|
Benedikt Meurer
2016/03/01 04:54:44
Nit: Rename to LoadHeapNumberValue
binji
2016/03/01 21:56:38
Done.
|
| // Load an array element from a FixedArray. |
| Node* LoadFixedArrayElementSmiIndex(Node* object, Node* smi_index, |
| int additional_offset = 0); |
| Node* LoadFixedArrayElementConstantIndex(Node* object, int index); |
| + Node* InstanceType(Node* object); |
|
Jarin
2016/02/29 20:04:43
InstanceType -> LoadInstanceType?
binji
2016/03/01 21:56:38
Done.
|
| + |
| + // Returns a node that is true if the given bit is set in |word32|. |
| + template <typename T> |
| + Node* BitFieldValue(Node* word32) { |
|
Benedikt Meurer
2016/03/01 04:54:44
Nit: Rename to BitFieldDecode
binji
2016/03/01 21:56:38
Done.
|
| + return BitFieldValue(word32, T::kShift, T::kMask); |
| + } |
| + |
| + Node* BitFieldValue(Node* word32, uint32_t shift, uint32_t mask); |
|
Benedikt Meurer
2016/03/01 04:54:44
Nit: Rename to BitFieldDecode
binji
2016/03/01 21:56:38
Done.
|
| + |
| protected: |
| // Protected helpers which delegate to RawMachineAssembler. |
| Graph* graph(); |