mirror of
https://github.com/neovim/neovim.git
synced 2025-09-26 21:18:34 +00:00
perf(cid/350479): avoid copying ExtmarkInfo when calling extmark_to_array()
This commit is contained in:
@@ -95,27 +95,27 @@ static bool ns_initialized(uint32_t ns)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static Array extmark_to_array(ExtmarkInfo extmark, bool id, bool add_dict)
|
static Array extmark_to_array(const ExtmarkInfo *extmark, bool id, bool add_dict)
|
||||||
{
|
{
|
||||||
Array rv = ARRAY_DICT_INIT;
|
Array rv = ARRAY_DICT_INIT;
|
||||||
if (id) {
|
if (id) {
|
||||||
ADD(rv, INTEGER_OBJ((Integer)extmark.mark_id));
|
ADD(rv, INTEGER_OBJ((Integer)extmark->mark_id));
|
||||||
}
|
}
|
||||||
ADD(rv, INTEGER_OBJ(extmark.row));
|
ADD(rv, INTEGER_OBJ(extmark->row));
|
||||||
ADD(rv, INTEGER_OBJ(extmark.col));
|
ADD(rv, INTEGER_OBJ(extmark->col));
|
||||||
|
|
||||||
if (add_dict) {
|
if (add_dict) {
|
||||||
Dictionary dict = ARRAY_DICT_INIT;
|
Dictionary dict = ARRAY_DICT_INIT;
|
||||||
|
|
||||||
PUT(dict, "right_gravity", BOOLEAN_OBJ(extmark.right_gravity));
|
PUT(dict, "right_gravity", BOOLEAN_OBJ(extmark->right_gravity));
|
||||||
|
|
||||||
if (extmark.end_row >= 0) {
|
if (extmark->end_row >= 0) {
|
||||||
PUT(dict, "end_row", INTEGER_OBJ(extmark.end_row));
|
PUT(dict, "end_row", INTEGER_OBJ(extmark->end_row));
|
||||||
PUT(dict, "end_col", INTEGER_OBJ(extmark.end_col));
|
PUT(dict, "end_col", INTEGER_OBJ(extmark->end_col));
|
||||||
PUT(dict, "end_right_gravity", BOOLEAN_OBJ(extmark.end_right_gravity));
|
PUT(dict, "end_right_gravity", BOOLEAN_OBJ(extmark->end_right_gravity));
|
||||||
}
|
}
|
||||||
|
|
||||||
Decoration *decor = &extmark.decor;
|
const Decoration *decor = &extmark->decor;
|
||||||
if (decor->hl_id) {
|
if (decor->hl_id) {
|
||||||
String name = cstr_to_string((const char *)syn_id2name(decor->hl_id));
|
String name = cstr_to_string((const char *)syn_id2name(decor->hl_id));
|
||||||
PUT(dict, "hl_group", STRING_OBJ(name));
|
PUT(dict, "hl_group", STRING_OBJ(name));
|
||||||
@@ -238,7 +238,7 @@ ArrayOf(Integer) nvim_buf_get_extmark_by_id(Buffer buffer, Integer ns_id,
|
|||||||
if (extmark.row < 0) {
|
if (extmark.row < 0) {
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
return extmark_to_array(extmark, false, details);
|
return extmark_to_array(&extmark, false, details);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Gets extmarks in "traversal order" from a |charwise| region defined by
|
/// Gets extmarks in "traversal order" from a |charwise| region defined by
|
||||||
@@ -357,7 +357,7 @@ Array nvim_buf_get_extmarks(Buffer buffer, Integer ns_id, Object start, Object e
|
|||||||
u_row, u_col, (int64_t)limit, reverse);
|
u_row, u_col, (int64_t)limit, reverse);
|
||||||
|
|
||||||
for (size_t i = 0; i < kv_size(marks); i++) {
|
for (size_t i = 0; i < kv_size(marks); i++) {
|
||||||
ADD(rv, ARRAY_OBJ(extmark_to_array(kv_A(marks, i), true, (bool)details)));
|
ADD(rv, ARRAY_OBJ(extmark_to_array(&kv_A(marks, i), true, (bool)details)));
|
||||||
}
|
}
|
||||||
|
|
||||||
kv_destroy(marks);
|
kv_destroy(marks);
|
||||||
|
Reference in New Issue
Block a user