Skip to content

Commit 8fd455b

Browse files
committed
Prepare cval_to_astnode to allocate value on custom pool
1 parent e345812 commit 8fd455b

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

eval.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,9 @@ namespace Sass {
429429
Map* mm = new (ctx.mem) Map(m->pstate(),
430430
m->length());
431431
for (auto key : m->keys()) {
432-
*mm << std::make_pair(key->perform(this), m->at(key)->perform(this));;
432+
Expression* ex_key = key->perform(this);
433+
Expression* ex_val = m->at(key)->perform(this);
434+
*mm << std::make_pair(ex_key, ex_val);
433435
}
434436

435437
// check the evaluated keys aren't duplicates.
@@ -677,7 +679,7 @@ namespace Sass {
677679
} else if (sass_value_get_tag(c_val) == SASS_WARNING) {
678680
error("warning in C function " + c->name() + ": " + sass_warning_get_message(c_val), c->pstate(), backtrace());
679681
}
680-
result = cval_to_astnode(c_val, ctx, backtrace(), c->pstate());
682+
result = cval_to_astnode(ctx.mem, c_val, ctx, backtrace(), c->pstate());
681683

682684
exp.backtrace_stack.pop_back();
683685
sass_delete_value(c_args);
@@ -1269,46 +1271,46 @@ namespace Sass {
12691271
return str;
12701272
}
12711273

1272-
Expression* cval_to_astnode(Sass_Value* v, Context& ctx, Backtrace* backtrace, ParserState pstate)
1274+
Expression* cval_to_astnode(Memory_Manager<AST_Node>& mem, union Sass_Value* v, Context& ctx, Backtrace* backtrace, ParserState pstate)
12731275
{
12741276
using std::strlen;
12751277
using std::strcpy;
12761278
Expression* e = 0;
12771279
switch (sass_value_get_tag(v)) {
12781280
case SASS_BOOLEAN: {
1279-
e = new (ctx.mem) Boolean(pstate, !!sass_boolean_get_value(v));
1281+
e = new (mem) Boolean(pstate, !!sass_boolean_get_value(v));
12801282
} break;
12811283
case SASS_NUMBER: {
1282-
e = new (ctx.mem) Number(pstate, sass_number_get_value(v), sass_number_get_unit(v));
1284+
e = new (mem) Number(pstate, sass_number_get_value(v), sass_number_get_unit(v));
12831285
} break;
12841286
case SASS_COLOR: {
1285-
e = new (ctx.mem) Color(pstate, sass_color_get_r(v), sass_color_get_g(v), sass_color_get_b(v), sass_color_get_a(v));
1287+
e = new (mem) Color(pstate, sass_color_get_r(v), sass_color_get_g(v), sass_color_get_b(v), sass_color_get_a(v));
12861288
} break;
12871289
case SASS_STRING: {
12881290
if (sass_string_is_quoted(v))
1289-
e = new (ctx.mem) String_Quoted(pstate, sass_string_get_value(v));
1291+
e = new (mem) String_Quoted(pstate, sass_string_get_value(v));
12901292
else {
1291-
e = new (ctx.mem) String_Constant(pstate, sass_string_get_value(v));
1293+
e = new (mem) String_Constant(pstate, sass_string_get_value(v));
12921294
}
12931295
} break;
12941296
case SASS_LIST: {
1295-
List* l = new (ctx.mem) List(pstate, sass_list_get_length(v), sass_list_get_separator(v));
1297+
List* l = new (mem) List(pstate, sass_list_get_length(v), sass_list_get_separator(v));
12961298
for (size_t i = 0, L = sass_list_get_length(v); i < L; ++i) {
1297-
*l << cval_to_astnode(sass_list_get_value(v, i), ctx, backtrace, pstate);
1299+
*l << cval_to_astnode(mem, sass_list_get_value(v, i), ctx, backtrace, pstate);
12981300
}
12991301
e = l;
13001302
} break;
13011303
case SASS_MAP: {
1302-
Map* m = new (ctx.mem) Map(pstate);
1304+
Map* m = new (mem) Map(pstate);
13031305
for (size_t i = 0, L = sass_map_get_length(v); i < L; ++i) {
13041306
*m << std::make_pair(
1305-
cval_to_astnode(sass_map_get_key(v, i), ctx, backtrace, pstate),
1306-
cval_to_astnode(sass_map_get_value(v, i), ctx, backtrace, pstate));
1307+
cval_to_astnode(mem, sass_map_get_key(v, i), ctx, backtrace, pstate),
1308+
cval_to_astnode(mem, sass_map_get_value(v, i), ctx, backtrace, pstate));
13071309
}
13081310
e = m;
13091311
} break;
13101312
case SASS_NULL: {
1311-
e = new (ctx.mem) Null(pstate);
1313+
e = new (mem) Null(pstate);
13121314
} break;
13131315
case SASS_ERROR: {
13141316
error("Error in C function: " + string(sass_error_get_message(v)), pstate, backtrace);

eval.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ namespace Sass {
100100

101101
};
102102

103-
Expression* cval_to_astnode(Sass_Value* v, Context& ctx, Backtrace* backtrace, ParserState pstate = ParserState("[AST]"));
103+
Expression* cval_to_astnode(Memory_Manager<AST_Node>& mem, union Sass_Value* v, Context& ctx, Backtrace* backtrace, ParserState pstate = ParserState("[AST]"));
104104

105105
}
106106

0 commit comments

Comments
 (0)