aboutsummaryrefslogtreecommitdiff
path: root/src/cache.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/cache.zig')
-rw-r--r--src/cache.zig46
1 files changed, 5 insertions, 41 deletions
diff --git a/src/cache.zig b/src/cache.zig
index 56a706c5c..a25969668 100644
--- a/src/cache.zig
+++ b/src/cache.zig
@@ -164,31 +164,16 @@ pub const Cache = struct {
log: *logger.Log,
source: *const logger.Source,
) anyerror!?js_ast.Ast {
- cache.mutex.lock();
- defer cache.mutex.unlock();
-
- var get_or_put_result = try cache.entries.getOrPut(source.key_path.text);
-
- if (get_or_put_result.found_existing) {
- return if (get_or_put_result.entry.value.ok) get_or_put_result.entry.value.ast else null;
- }
-
var temp_log = logger.Log.init(allocator);
+ defer temp_log.appendTo(log) catch {};
var parser = js_parser.Parser.init(opts, &temp_log, source, defines, allocator) catch |err| {
- temp_log.appendTo(log) catch {};
- get_or_put_result.entry.value = Result{ .ast = undefined, .ok = false };
-
- return null;
- };
- get_or_put_result.entry.value = parser.parse() catch |err| {
- get_or_put_result.entry.value = Result{ .ast = undefined, .ok = false };
- temp_log.appendTo(log) catch {};
return null;
};
- temp_log.appendTo(log) catch {};
- return if (get_or_put_result.entry.value.ok) get_or_put_result.entry.value.ast else null;
+ const result = try parser.parse();
+
+ return if (result.ok) result.ast else null;
}
};
@@ -209,34 +194,13 @@ pub const Cache = struct {
};
}
fn parse(cache: *@This(), log: *logger.Log, source: logger.Source, allocator: *std.mem.Allocator, is_tsconfig: bool, func: anytype) anyerror!?js_ast.Expr {
- {
- cache.mutex.lock();
- defer cache.mutex.unlock();
- if (cache.entries.get(source.key_path.text)) |entry| {
- return entry.expr;
- }
- }
-
var temp_log = logger.Log.init(allocator);
defer {
temp_log.appendTo(log) catch {};
}
- const expr = func(&source, &temp_log, allocator) catch handler: {
+ return func(&source, &temp_log, allocator) catch handler: {
break :handler null;
};
- const entry = try allocator.create(Entry);
- entry.* = Entry{
- .is_tsconfig = is_tsconfig,
- .source = source,
- .expr = expr,
- .ok = expr != null,
- };
-
- cache.mutex.lock();
- defer cache.mutex.unlock();
- std.debug.assert(source.key_path.text.len > 0); // missing key_path in source
- try cache.entries.put(source.key_path.text, entry);
- return entry.expr;
}
pub fn parseJSON(cache: *@This(), log: *logger.Log, source: logger.Source, allocator: *std.mem.Allocator) anyerror!?js_ast.Expr {
return try parse(cache, log, source, allocator, false, json_parser.ParseJSON);