diff --git a/compiler/GHC/Utils/Binary.hs b/compiler/GHC/Utils/Binary.hs
index fa67e83fda22a08211ff3a4dd7295b517531a75b..db28255690b05ce272ddc8128cebdbdfab4b84c6 100644
--- a/compiler/GHC/Utils/Binary.hs
+++ b/compiler/GHC/Utils/Binary.hs
@@ -597,9 +597,9 @@ getSLEB128 bh = do
 -- is to the interface file without the variable length encoding we usually
 -- apply.
 
--- | Encode the argument in it's full length. This is different from many default
+-- | Encode the argument in its full length. This is different from many default
 -- binary instances which make no guarantee about the actual encoding and
--- might do things use variable length encoding.
+-- might do things using variable length encoding.
 newtype FixedLengthEncoding a
   = FixedLengthEncoding { unFixedLength :: a }
   deriving (Eq,Ord,Show)
@@ -824,11 +824,11 @@ we stored a tag byte to discriminate between the two cases.
 This made some sense as it's highly portable but also not very
 efficient.
 
-However GHC stores a surprisingly large number off large Integer
+However GHC stores a surprisingly large number of large Integer
 values. In the examples looked at between 25% and 50% of Integers
 serialized were outside of the Int32 range.
 
-Consider a valie like `2724268014499746065`, some sort of hash
+Consider a value like `2724268014499746065`, some sort of hash
 actually generated by GHC.
 In the old scheme this was encoded as a list of 19 chars. This
 gave a size of 77 Bytes, one for the length of the list and 76