| Index: src/compiler/code-stub-assembler.h
|
| diff --git a/src/compiler/code-stub-assembler.h b/src/compiler/code-stub-assembler.h
|
| index b6b2bd4738419e6100366c8c1a18ceea18809bb6..192ffc2ceee6e74cde1c3e3d5c4f52d1f99a8158 100644
|
| --- a/src/compiler/code-stub-assembler.h
|
| +++ b/src/compiler/code-stub-assembler.h
|
| @@ -69,12 +69,18 @@ class Schedule;
|
|
|
| class CodeStubAssembler {
|
| public:
|
| + // CodeStubAssembler for generating stubs.
|
| // |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);
|
| +
|
| + // CodeStubAssembler for generating JS functions.
|
| + CodeStubAssembler(Isolate* isolate, Zone* zone, int parameter_count,
|
| + Code::Flags flags, const char* name);
|
| +
|
| virtual ~CodeStubAssembler();
|
|
|
| Handle<Code> GenerateCode();
|
| @@ -105,6 +111,8 @@ class CodeStubAssembler {
|
| Node* HeapConstant(Handle<HeapObject> object);
|
| Node* BooleanConstant(bool value);
|
| Node* ExternalConstant(ExternalReference address);
|
| + Node* NullConstant();
|
| + Node* UndefinedConstant();
|
|
|
| Node* Parameter(int value);
|
| void Return(Node* value);
|
| @@ -186,6 +194,10 @@ class CodeStubAssembler {
|
| Node* TailCall(const CallInterfaceDescriptor& descriptor, Node* target,
|
| Node** args, size_t result_size = 1);
|
|
|
| + // Calls w/ custom CallDescriptor. Prefer the call methods above.
|
| + Node* CallN(CallDescriptor* descriptor, Node* code_target, Node** args);
|
| + Node* TailCallN(CallDescriptor* descriptor, Node* code_target, Node** args);
|
| +
|
| // ===========================================================================
|
| // Macros
|
| // ===========================================================================
|
| @@ -201,9 +213,11 @@ class CodeStubAssembler {
|
| Node* WordIsSmi(Node* a);
|
|
|
| // Load an object pointer from a buffer that isn't in the heap.
|
| - Node* LoadBufferObject(Node* buffer, int offset);
|
| + Node* LoadBufferObject(Node* buffer, int offset,
|
| + MachineType rep = MachineType::AnyTagged());
|
| // Load a field from an object on the heap.
|
| - Node* LoadObjectField(Node* object, int offset);
|
| + Node* LoadObjectField(Node* object, int offset,
|
| + MachineType rep = MachineType::AnyTagged());
|
|
|
| // Load an array element from a FixedArray.
|
| Node* LoadFixedArrayElementSmiIndex(Node* object, Node* smi_index,
|
| @@ -223,9 +237,9 @@ class CodeStubAssembler {
|
| private:
|
| friend class CodeStubAssemblerTester;
|
|
|
| - Node* CallN(CallDescriptor* descriptor, Node* code_target, Node** args);
|
| - Node* TailCallN(CallDescriptor* descriptor, Node* code_target, Node** args);
|
| -
|
| + CodeStubAssembler(Isolate* isolate, Zone* zone,
|
| + CallDescriptor* call_descriptor, Code::Flags flags,
|
| + const char* name);
|
| Node* SmiShiftBitsConstant();
|
|
|
| base::SmartPointer<RawMachineAssembler> raw_assembler_;
|
|
|