Based on rb_iseq_first_lineno() and other usages in iseq.c,
it looks like the following would be more correct:

--- a/vm_core.h
+++ b/vm_core.h
@@ -177,7 +177,7 @@ typedef struct rb_iseq_location_struct {
     const VALUE absolute_path;
     const VALUE base_label;
     const VALUE label;
-    size_t first_lineno;
+    VALUE first_lineno;
 } rb_iseq_location_t;


However, I would like to use uint32_t and move it to the top of
rb_iseq_location_t, so it may be packed with "enum iseq_type" in
rb_iseq_struct.


Also we probably don't need 32-bit integers for arg* fields.
8 bits should be plenty enough, right?