| Index: src/compiler/raw-machine-assembler.h | 
| diff --git a/src/compiler/raw-machine-assembler.h b/src/compiler/raw-machine-assembler.h | 
| index 96a91e2dc3ca370dcb4affe998fd4b0f539e0ccd..8e86adcbf68bc5bacfad6bf8cb50b470e525f309 100644 | 
| --- a/src/compiler/raw-machine-assembler.h | 
| +++ b/src/compiler/raw-machine-assembler.h | 
| @@ -133,6 +133,34 @@ class RawMachineAssembler { | 
| base, index, value); | 
| } | 
|  | 
| +  // Unaligned memory operations | 
| +  Node* UnalignedLoad(MachineType rep, Node* base) { | 
| +    return UnalignedLoad(rep, base, IntPtrConstant(0)); | 
| +  } | 
| +  Node* UnalignedLoad(MachineType rep, Node* base, Node* index) { | 
| +    if (machine()->UnalignedLoadSupported(rep, 1)) { | 
| +      return AddNode(machine()->Load(rep), base, index); | 
| +    } else { | 
| +      return AddNode(machine()->UnalignedLoad(rep), base, index); | 
| +    } | 
| +  } | 
| +  Node* UnalignedStore(MachineRepresentation rep, Node* base, Node* value) { | 
| +    return UnalignedStore(rep, base, IntPtrConstant(0), value); | 
| +  } | 
| +  Node* UnalignedStore(MachineRepresentation rep, Node* base, Node* index, | 
| +                       Node* value) { | 
| +    MachineType t = MachineType::TypeForRepresentation(rep); | 
| +    if (machine()->UnalignedStoreSupported(t, 1)) { | 
| +      return AddNode(machine()->Store(StoreRepresentation( | 
| +                         rep, WriteBarrierKind::kNoWriteBarrier)), | 
| +                     base, index, value); | 
| +    } else { | 
| +      return AddNode( | 
| +          machine()->UnalignedStore(UnalignedStoreRepresentation(rep)), base, | 
| +          index, value); | 
| +    } | 
| +  } | 
| + | 
| // Atomic memory operations. | 
| Node* AtomicLoad(MachineType rep, Node* base, Node* index) { | 
| return AddNode(machine()->AtomicLoad(rep), base, index); | 
| @@ -650,6 +678,14 @@ class RawMachineAssembler { | 
| Node* StoreToPointer(void* address, MachineRepresentation rep, Node* node) { | 
| return Store(rep, PointerConstant(address), node, kNoWriteBarrier); | 
| } | 
| +  Node* UnalignedLoadFromPointer(void* address, MachineType rep, | 
| +                                 int32_t offset = 0) { | 
| +    return UnalignedLoad(rep, PointerConstant(address), Int32Constant(offset)); | 
| +  } | 
| +  Node* UnalignedStoreToPointer(void* address, MachineRepresentation rep, | 
| +                                Node* node) { | 
| +    return UnalignedStore(rep, PointerConstant(address), node); | 
| +  } | 
| Node* StringConstant(const char* string) { | 
| return HeapConstant(isolate()->factory()->InternalizeUtf8String(string)); | 
| } | 
|  |