return symbol__disassemble(sym, &args);
 }
 
-static void insert_source_line(struct rb_root *root, struct annotation_line *al)
+static void insert_source_line(struct rb_root *root, struct annotation_line *al,
+                              struct annotation_options *opts)
 {
        struct annotation_line *iter;
        struct rb_node **p = &root->rb_node;
                if (ret == 0) {
                        for (i = 0; i < al->data_nr; i++) {
                                iter->data[i].percent_sum += annotation_data__percent(&al->data[i],
-                                                                                     PERCENT_HITS_LOCAL);
+                                                                                     opts->percent_type);
                        }
                        return;
                }
 
        for (i = 0; i < al->data_nr; i++) {
                al->data[i].percent_sum = annotation_data__percent(&al->data[i],
-                                                                  PERCENT_HITS_LOCAL);
+                                                                  opts->percent_type);
        }
 
        rb_link_node(&al->rb_node, parent, p);
 }
 
 static void annotation__calc_lines(struct annotation *notes, struct map *map,
-                                 struct rb_root *root)
+                                  struct rb_root *root,
+                                  struct annotation_options *opts)
 {
        struct annotation_line *al;
        struct rb_root tmp_root = RB_ROOT;
                        double percent;
 
                        percent = annotation_data__percent(&al->data[i],
-                                                          PERCENT_HITS_LOCAL);
+                                                          opts->percent_type);
 
                        if (percent > percent_max)
                                percent_max = percent;
 
                al->path = get_srcline(map->dso, notes->start + al->offset, NULL,
                                       false, true, notes->start + al->offset);
-               insert_source_line(&tmp_root, al);
+               insert_source_line(&tmp_root, al, opts);
        }
 
        resort_source_line(root, &tmp_root);
 }
 
 static void symbol__calc_lines(struct symbol *sym, struct map *map,
-                             struct rb_root *root)
+                              struct rb_root *root,
+                              struct annotation_options *opts)
 {
        struct annotation *notes = symbol__annotation(sym);
 
-       annotation__calc_lines(notes, map, root);
+       annotation__calc_lines(notes, map, root, opts);
 }
 
 int symbol__tty_annotate2(struct symbol *sym, struct map *map,
 
        if (opts->print_lines) {
                srcline_full_filename = opts->full_path;
-               symbol__calc_lines(sym, map, &source_line);
+               symbol__calc_lines(sym, map, &source_line, opts);
                print_summary(&source_line, dso->long_name);
        }
 
 
        if (opts->print_lines) {
                srcline_full_filename = opts->full_path;
-               symbol__calc_lines(sym, map, &source_line);
+               symbol__calc_lines(sym, map, &source_line, opts);
                print_summary(&source_line, dso->long_name);
        }