diff --git a/src/jsregexp.cc b/src/jsregexp.cc
index 5dfde94..30d4dcb 100644
--- a/src/jsregexp.cc
+++ b/src/jsregexp.cc
@@ -380,10 +380,11 @@
 }
 
 
-RegExpImpl::IrregexpResult RegExpImpl::IrregexpExecOnce(Handle<JSRegExp> regexp,
-                                                        Handle<String> subject,
-                                                        int index,
-                                                        Vector<int> output) {
+RegExpImpl::IrregexpResult RegExpImpl::IrregexpExecOnce(
+    Handle<JSRegExp> regexp,
+    Handle<String> subject,
+    int index,
+    Vector<int32_t> output) {
   Handle<FixedArray> irregexp(FixedArray::cast(regexp->data()));
 
   ASSERT(index >= 0);
@@ -479,8 +480,8 @@
   OffsetsVector registers(required_registers);
 
   IrregexpResult res = RegExpImpl::IrregexpExecOnce(
-      jsregexp, subject, previous_index, Vector<int>(registers.vector(),
-                                                     registers.length()));
+      jsregexp, subject, previous_index, Vector<int32_t>(registers.vector(),
+                                                         registers.length()));
   if (res == RE_SUCCESS) {
     int capture_register_count =
         (IrregexpNumberOfCaptures(FixedArray::cast(jsregexp->data())) + 1) * 2;
