--- /dev/null
+diff -ur gjs-0.7/gi/arg.c gjs-0.7.new/gi/arg.c
+--- gjs-0.7/gi/arg.c 2010-05-13 16:11:18.000000000 +0200
++++ gjs-0.7.new/gi/arg.c 2010-07-22 20:15:29.310255420 +0200
+@@ -124,15 +124,6 @@
+ switch (type) {
+ #define INT_TYPE(tag, ty, sign) \
+ case GI_TYPE_TAG_##tag: return type_tag_from_size(sizeof(ty), (sign));
+- INT_TYPE(SHORT, short, SIGNED);
+- INT_TYPE(USHORT, unsigned short, UNSIGNED);
+- INT_TYPE(INT, int, SIGNED);
+- INT_TYPE(UINT, unsigned int, UNSIGNED);
+- INT_TYPE(LONG, long, SIGNED);
+- INT_TYPE(ULONG, unsigned long, UNSIGNED);
+- INT_TYPE(SSIZE, ssize_t, SIGNED);
+- INT_TYPE(SIZE, size_t, UNSIGNED);
+- INT_TYPE(TIME_T, time_t, SIGNED); /* time_t is signed */
+ INT_TYPE(GTYPE, GType, UNSIGNED);
+ #undef INT_TYPE
+ default:
+@@ -588,8 +579,7 @@
+ gboolean nullable_type;
+
+ type_tag = g_type_info_get_tag( (GITypeInfo*) type_info);
+- if (type_tag != GI_TYPE_TAG_TIME_T) // we handle time_t as a non-int type
+- type_tag = normalize_int_types(type_tag);
++ type_tag = normalize_int_types(type_tag);
+
+ gjs_debug_marshal(GJS_DEBUG_GFUNCTION,
+ "Converting jsval to GArgument %s",
+@@ -680,14 +670,6 @@
+ }
+ break;
+
+- case GI_TYPE_TAG_TIME_T: {
+- double v;
+- if (!JS_ValueToNumber(context, value, &v))
+- wrong = TRUE;
+- arg->v_ulong = (unsigned long) (v/1000);
+- }
+- break;
+-
+ case GI_TYPE_TAG_BOOLEAN:
+ if (!JS_ValueToBoolean(context, value, &arg->v_boolean))
+ wrong = TRUE;
+@@ -1063,14 +1045,6 @@
+ }
+ break;
+
+- case GI_TYPE_TAG_SHORT:
+- case GI_TYPE_TAG_USHORT:
+- case GI_TYPE_TAG_INT:
+- case GI_TYPE_TAG_UINT:
+- case GI_TYPE_TAG_LONG:
+- case GI_TYPE_TAG_ULONG:
+- case GI_TYPE_TAG_SIZE:
+- case GI_TYPE_TAG_SSIZE:
+ case GI_TYPE_TAG_GTYPE:
+ /* these types are converted by normalize_int_types */
+ g_assert_not_reached();
+@@ -1134,8 +1108,7 @@
+ GITypeTag type_tag;
+
+ type_tag = g_type_info_get_tag( (GITypeInfo*) type_info);
+- if (type_tag != GI_TYPE_TAG_TIME_T) // we handle time_t as a non-int type
+- type_tag = normalize_int_types(type_tag);
++ type_tag = normalize_int_types(type_tag);
+
+ switch (type_tag) {
+ case GI_TYPE_TAG_VOID:
+@@ -1173,10 +1146,6 @@
+ case GI_TYPE_TAG_UINT64:
+ arg->v_uint64 = 0;
+
+- case GI_TYPE_TAG_TIME_T:
+- arg->v_ulong = 0;
+- break;
+-
+ case GI_TYPE_TAG_BOOLEAN:
+ arg->v_boolean = FALSE;
+ break;
+@@ -1233,14 +1202,6 @@
+ arg->v_pointer = NULL;
+ break;
+
+- case GI_TYPE_TAG_SHORT:
+- case GI_TYPE_TAG_USHORT:
+- case GI_TYPE_TAG_INT:
+- case GI_TYPE_TAG_UINT:
+- case GI_TYPE_TAG_LONG:
+- case GI_TYPE_TAG_ULONG:
+- case GI_TYPE_TAG_SIZE:
+- case GI_TYPE_TAG_SSIZE:
+ case GI_TYPE_TAG_GTYPE:
+ /* these types are converted by normalize_int_types */
+ g_assert_not_reached();
+@@ -1429,8 +1390,7 @@
+ GITypeTag type_tag;
+
+ type_tag = g_type_info_get_tag( (GITypeInfo*) type_info);
+- if (type_tag != GI_TYPE_TAG_TIME_T) // we handle time_t as a non-int type
+- type_tag = normalize_int_types(type_tag);
++ type_tag = normalize_int_types(type_tag);
+
+ gjs_debug_marshal(GJS_DEBUG_GFUNCTION,
+ "Converting GArgument %s to jsval",
+@@ -1477,11 +1437,6 @@
+ case GI_TYPE_TAG_DOUBLE:
+ return JS_NewDoubleValue(context, arg->v_double, value_p);
+
+- case GI_TYPE_TAG_TIME_T:
+- *value_p = gjs_date_from_time_t(context,
+- (time_t) arg->v_long);
+- return JS_TRUE;
+-
+ case GI_TYPE_TAG_FILENAME:
+ if (arg->v_pointer)
+ return gjs_string_from_filename(context, arg->v_pointer, -1, value_p);
+@@ -1701,14 +1656,6 @@
+ }
+ break;
+
+- case GI_TYPE_TAG_SHORT:
+- case GI_TYPE_TAG_USHORT:
+- case GI_TYPE_TAG_INT:
+- case GI_TYPE_TAG_UINT:
+- case GI_TYPE_TAG_LONG:
+- case GI_TYPE_TAG_ULONG:
+- case GI_TYPE_TAG_SIZE:
+- case GI_TYPE_TAG_SSIZE:
+ case GI_TYPE_TAG_GTYPE:
+ /* these types are converted by normalize_int_types */
+ g_assert_not_reached();
+@@ -1782,21 +1729,12 @@
+ case GI_TYPE_TAG_UINT8:
+ case GI_TYPE_TAG_INT16:
+ case GI_TYPE_TAG_UINT16:
+- case GI_TYPE_TAG_SHORT:
+- case GI_TYPE_TAG_USHORT:
+- case GI_TYPE_TAG_INT:
+ case GI_TYPE_TAG_INT32:
+- case GI_TYPE_TAG_UINT:
+ case GI_TYPE_TAG_UINT32:
+ case GI_TYPE_TAG_INT64:
+ case GI_TYPE_TAG_UINT64:
+- case GI_TYPE_TAG_LONG:
+- case GI_TYPE_TAG_ULONG:
+ case GI_TYPE_TAG_FLOAT:
+ case GI_TYPE_TAG_DOUBLE:
+- case GI_TYPE_TAG_SSIZE:
+- case GI_TYPE_TAG_SIZE:
+- case GI_TYPE_TAG_TIME_T:
+ break;
+
+ case GI_TYPE_TAG_FILENAME:
+diff -ur gjs-0.7/gi/boxed.c gjs-0.7.new/gi/boxed.c
+--- gjs-0.7/gi/boxed.c 2010-05-03 19:58:00.000000000 +0200
++++ gjs-0.7.new/gi/boxed.c 2010-07-22 20:15:49.680240194 +0200
+@@ -1043,19 +1043,10 @@
+ case GI_TYPE_TAG_UINT16:
+ case GI_TYPE_TAG_INT32:
+ case GI_TYPE_TAG_UINT32:
+- case GI_TYPE_TAG_SHORT:
+- case GI_TYPE_TAG_USHORT:
+- case GI_TYPE_TAG_INT:
+- case GI_TYPE_TAG_UINT:
+ case GI_TYPE_TAG_INT64:
+ case GI_TYPE_TAG_UINT64:
+- case GI_TYPE_TAG_LONG:
+- case GI_TYPE_TAG_ULONG:
+- case GI_TYPE_TAG_SSIZE:
+- case GI_TYPE_TAG_SIZE:
+ case GI_TYPE_TAG_FLOAT:
+ case GI_TYPE_TAG_DOUBLE:
+- case GI_TYPE_TAG_TIME_T:
+ break;
+ case GI_TYPE_TAG_VOID:
+ case GI_TYPE_TAG_GTYPE: