| Index: src/compiler/code-stub-assembler.cc
|
| diff --git a/src/compiler/code-stub-assembler.cc b/src/compiler/code-stub-assembler.cc
|
| index 45f47d3310933dc50a8b8feb7ec5c12149c5a844..f29ff826029f430f1286b37b914169e685383dd0 100644
|
| --- a/src/compiler/code-stub-assembler.cc
|
| +++ b/src/compiler/code-stub-assembler.cc
|
| @@ -28,12 +28,27 @@ CodeStubAssembler::CodeStubAssembler(Isolate* isolate, Zone* zone,
|
| const CallInterfaceDescriptor& descriptor,
|
| Code::Flags flags, const char* name,
|
| size_t result_size)
|
| - : raw_assembler_(new RawMachineAssembler(
|
| - isolate, new (zone) Graph(zone),
|
| + : CodeStubAssembler(
|
| + isolate, zone,
|
| Linkage::GetStubCallDescriptor(
|
| isolate, zone, descriptor, descriptor.GetStackParameterCount(),
|
| CallDescriptor::kNoFlags, Operator::kNoProperties,
|
| - MachineType::AnyTagged(), result_size))),
|
| + MachineType::AnyTagged(), result_size),
|
| + flags, name) {}
|
| +
|
| +CodeStubAssembler::CodeStubAssembler(Isolate* isolate, Zone* zone,
|
| + int parameter_count, Code::Flags flags,
|
| + const char* name)
|
| + : CodeStubAssembler(isolate, zone, Linkage::GetJSCallDescriptor(
|
| + zone, false, parameter_count,
|
| + CallDescriptor::kNoFlags),
|
| + flags, name) {}
|
| +
|
| +CodeStubAssembler::CodeStubAssembler(Isolate* isolate, Zone* zone,
|
| + CallDescriptor* call_descriptor,
|
| + Code::Flags flags, const char* name)
|
| + : raw_assembler_(new RawMachineAssembler(isolate, new (zone) Graph(zone),
|
| + call_descriptor)),
|
| flags_(flags),
|
| name_(name),
|
| code_generated_(false),
|
| @@ -86,6 +101,14 @@ Node* CodeStubAssembler::ExternalConstant(ExternalReference address) {
|
| return raw_assembler_->ExternalConstant(address);
|
| }
|
|
|
| +Node* CodeStubAssembler::NullConstant() {
|
| + return LoadRoot(Heap::kNullValueRootIndex);
|
| +}
|
| +
|
| +Node* CodeStubAssembler::UndefinedConstant() {
|
| + return LoadRoot(Heap::kUndefinedValueRootIndex);
|
| +}
|
| +
|
| Node* CodeStubAssembler::Parameter(int value) {
|
| return raw_assembler_->Parameter(value);
|
| }
|
| @@ -151,8 +174,17 @@ Node* CodeStubAssembler::LoadBufferObject(Node* buffer, int offset) {
|
| }
|
|
|
| Node* CodeStubAssembler::LoadObjectField(Node* object, int offset) {
|
| - return raw_assembler_->Load(MachineType::AnyTagged(), object,
|
| - IntPtrConstant(offset - kHeapObjectTag));
|
| + return LoadObjectFieldTyped(object, offset, MachineType::AnyTagged());
|
| +}
|
| +
|
| +Node* CodeStubAssembler::LoadObjectFieldTyped(Node* object, int offset,
|
| + MachineType rep) {
|
| + return LoadNativeFieldTyped(object, offset - kHeapObjectTag, rep);
|
| +}
|
| +
|
| +Node* CodeStubAssembler::LoadNativeFieldTyped(Node* object, int offset,
|
| + MachineType rep) {
|
| + return raw_assembler_->Load(rep, object, IntPtrConstant(offset));
|
| }
|
|
|
| Node* CodeStubAssembler::LoadFixedArrayElementSmiIndex(Node* object,
|
|
|