diff --git a/src/bignum.cc b/src/bignum.cc
index a20df23..2743d67 100644
--- a/src/bignum.cc
+++ b/src/bignum.cc
@@ -40,6 +40,7 @@
 
 template<typename S>
 static int BitSize(S value) {
+  (void) value;  // Mark variable as used.
   return 8 * sizeof(value);
 }
 
diff --git a/src/double-conversion.cc b/src/double-conversion.cc
index f276ba6..dc1feb1 100644
--- a/src/double-conversion.cc
+++ b/src/double-conversion.cc
@@ -679,7 +679,7 @@
       }
 
       ASSERT(buffer_pos == 0);
-      *processed_characters_count = current - input;
+      *processed_characters_count = static_cast<int>(current - input);
       return sign ? -Double::Infinity() : Double::Infinity();
     }
   }
@@ -698,7 +698,7 @@
       }
 
       ASSERT(buffer_pos == 0);
-      *processed_characters_count = current - input;
+      *processed_characters_count = static_cast<int>(current - input);
       return sign ? -Double::NaN() : Double::NaN();
     }
   }
@@ -707,7 +707,7 @@
   if (*current == '0') {
     ++current;
     if (current == end) {
-      *processed_characters_count = current - input;
+      *processed_characters_count = static_cast<int>(current - input);
       return SignedZero(sign);
     }
 
@@ -730,7 +730,7 @@
                                            &result_is_junk);
       if (!result_is_junk) {
         if (allow_trailing_spaces) AdvanceToNonspace(&current, end);
-        *processed_characters_count = current - input;
+        *processed_characters_count = static_cast<int>(current - input);
       }
       return result;
     }
@@ -739,7 +739,7 @@
     while (*current == '0') {
       ++current;
       if (current == end) {
-        *processed_characters_count = current - input;
+        *processed_characters_count = static_cast<int>(current - input);
         return SignedZero(sign);
       }
     }
@@ -787,7 +787,7 @@
       while (*current == '0') {
         ++current;
         if (current == end) {
-          *processed_characters_count = current - input;
+          *processed_characters_count = static_cast<int>(current - input);
           return SignedZero(sign);
         }
         exponent--;  // Move this 0 into the exponent.
@@ -895,7 +895,7 @@
                                   read_as_double,
                                   &result_is_junk);
     ASSERT(!result_is_junk);
-    *processed_characters_count = current - input;
+    *processed_characters_count = static_cast<int>(current - input);
     return result;
   }
 
@@ -913,7 +913,7 @@
   } else {
     converted = Strtof(Vector<const char>(buffer, buffer_pos), exponent);
   }
-  *processed_characters_count = current - input;
+  *processed_characters_count = static_cast<int>(current - input);
   return sign? -converted: converted;
 }
 
