 
   cl: (idx) -> @curr_frame().locals[idx]
   put_cl: (idx,val) -> @curr_frame().locals[idx] = val
-  # useful for category 2 values (longs, doubles)
+  # Category 2 values (longs, doubles) take two slots in Java. Since we only
+  # need one slot to represent a double in JS, we pad it with a null.
   put_cl2: (idx,val) -> @put_cl(idx,val); @put_cl(idx+1,null)
 
   push: (args...) ->
     cs = @curr_frame().stack
     Array::push.apply cs, args
-
   pop: () -> @curr_frame().stack.pop()
-  # useful for category 2 values (longs, doubles)
-  pop2: () -> @pop(); @pop()
-
-  # program counter manipulation
+  pop2: () -> @pop(); @pop() # For category 2 values.
+
+  # Program counter manipulation.
   curr_pc: ()   -> @curr_frame().pc
   goto_pc: (pc) -> @curr_frame().pc = pc
   inc_pc:  (n)  -> @curr_frame().pc += n
 
-  # heap manipulation
+  # Heap manipulation.
   get_obj: (oref) ->
     java_throw @, 'java/lang/NullPointerException', '' unless @heap[oref]?
     @heap[oref]

    @push null if field_spec.type in ['J','D']

  # static stuff
  static_get:(field_spec) ->
    f = @field_lookup(field_spec)
    obj = @get_obj @class_lookup(f.class_type, true)
    val = obj.fields[f.name]

    trace "redirecting #{oref} -> #{@string_redirector[key]}"
    return @string_redirector[key]

  # Used by ZipFile to return unique zip file descriptor IDs.
  set_zip_descriptor: (zd_obj) ->
    @zip_descriptors.push zd_obj
    gLong.fromInt(@zip_descriptors.length - 1)
