Index: src/compiler/code-stub-assembler.cc |
diff --git a/src/compiler/code-stub-assembler.cc b/src/compiler/code-stub-assembler.cc |
index 3f81657882f2269d1be0e5cbcad84e47dc3bfb95..e544d82d7d205a39e21e9c10e42c06d013cf78f6 100644 |
--- a/src/compiler/code-stub-assembler.cc |
+++ b/src/compiler/code-stub-assembler.cc |
@@ -119,7 +119,7 @@ Node* CodeStubAssembler::LoadStackPointer() { |
} |
Node* CodeStubAssembler::SmiShiftBitsConstant() { |
- return Int32Constant(kSmiShiftSize + kSmiTagSize); |
+ return IntPtrConstant(kSmiShiftSize + kSmiTagSize); |
} |
@@ -147,13 +147,17 @@ Node* CodeStubAssembler::ChangeInt32ToInt64(Node* value) { |
return raw_assembler_->ChangeInt32ToInt64(value); |
} |
+Node* CodeStubAssembler::ChangeUint32ToUint64(Node* value) { |
+ return raw_assembler_->ChangeUint32ToUint64(value); |
+} |
+ |
Node* CodeStubAssembler::WordShl(Node* value, int shift) { |
- return raw_assembler_->WordShl(value, Int32Constant(shift)); |
+ return raw_assembler_->WordShl(value, IntPtrConstant(shift)); |
} |
Node* CodeStubAssembler::WordIsSmi(Node* a) { |
- return WordEqual(raw_assembler_->WordAnd(a, Int32Constant(kSmiTagMask)), |
- Int32Constant(0)); |
+ return WordEqual(raw_assembler_->WordAnd(a, IntPtrConstant(kSmiTagMask)), |
+ IntPtrConstant(0)); |
} |
Node* CodeStubAssembler::LoadBufferObject(Node* buffer, int offset) { |
@@ -169,22 +173,22 @@ Node* CodeStubAssembler::LoadObjectField(Node* object, int offset) { |
Node* CodeStubAssembler::LoadFixedArrayElementSmiIndex(Node* object, |
Node* smi_index, |
int additional_offset) { |
- Node* header_size = raw_assembler_->Int32Constant( |
- additional_offset + FixedArray::kHeaderSize - kHeapObjectTag); |
+ int const kSmiShiftBits = kSmiShiftSize + kSmiTagSize; |
+ Node* header_size = IntPtrConstant(additional_offset + |
+ FixedArray::kHeaderSize - kHeapObjectTag); |
Node* scaled_index = |
- (kSmiShiftSize == 0) |
- ? raw_assembler_->Word32Shl( |
- smi_index, Int32Constant(kPointerSizeLog2 - kSmiTagSize)) |
- : raw_assembler_->Word32Shl(SmiUntag(smi_index), |
- Int32Constant(kPointerSizeLog2)); |
- Node* offset = raw_assembler_->Int32Add(scaled_index, header_size); |
- return raw_assembler_->Load(MachineType::AnyTagged(), object, offset); |
+ (kSmiShiftBits > kPointerSizeLog2) |
+ ? WordSar(smi_index, IntPtrConstant(kSmiShiftBits - kPointerSizeLog2)) |
+ : WordShl(smi_index, |
+ IntPtrConstant(kPointerSizeLog2 - kSmiShiftBits)); |
+ Node* offset = IntPtrAdd(scaled_index, header_size); |
+ return Load(MachineType::AnyTagged(), object, offset); |
} |
Node* CodeStubAssembler::LoadFixedArrayElementConstantIndex(Node* object, |
int index) { |
- Node* offset = raw_assembler_->Int32Constant( |
- FixedArray::kHeaderSize - kHeapObjectTag + index * kPointerSize); |
+ Node* offset = IntPtrConstant(FixedArray::kHeaderSize - kHeapObjectTag + |
+ index * kPointerSize); |
return raw_assembler_->Load(MachineType::AnyTagged(), object, offset); |
} |
@@ -192,7 +196,7 @@ Node* CodeStubAssembler::LoadRoot(Heap::RootListIndex root_index) { |
if (isolate()->heap()->RootCanBeTreatedAsConstant(root_index)) { |
Handle<Object> root = isolate()->heap()->root_handle(root_index); |
if (root->IsSmi()) { |
- return Int32Constant(Handle<Smi>::cast(root)->value()); |
+ return SmiConstant(Smi::cast(*root)); |
} else { |
return HeapConstant(Handle<HeapObject>::cast(root)); |
} |