aboutsummaryrefslogtreecommitdiff
path: root/src/js_lexer/identifier_cache.zig
blob: 21511846febf873a18c8de66d8f01c88bf2bf011 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const std = @import("std");
const bun = @import("root").bun;

pub const CachedBitset = extern struct {
    range: [2]i32,
    len: u32,

    pub fn fromFile(comptime filename: anytype) CachedBitset {
        return comptime @as(CachedBitset, @bitCast(bun.asByteSlice(@embedFile(filename)).ptr[0..@sizeOf(CachedBitset)].*));
    }
};

pub fn setMasks(masks: [*:0]const u8, comptime MaskType: type, masky: MaskType) void {
    const FieldInfo: std.builtin.Type.StructField = std.meta.fieldInfo(MaskType, "masks");
    masky.masks = @as(masks, @bitCast(FieldInfo.type));
}

pub const id_start_meta = CachedBitset.fromFile("id_start_bitset.meta.blob");
pub const id_continue_meta = CachedBitset.fromFile("id_continue_bitset.meta.blob");
pub const id_start_masks = @embedFile("id_start_bitset.blob");
pub const id_continue_masks = @embedFile("id_continue_bitset.blob");

pub const IDStartType = bun.bit_set.ArrayBitSet(usize, id_start_meta.len);
pub const IDContinueType = bun.bit_set.ArrayBitSet(usize, id_continue_meta.len);
pub const id_start = IDStartType{
    .masks = @as(std.meta.fieldInfo(IDStartType, .masks).type, @bitCast(@as(*const [id_start_masks.len]u8, @ptrCast(id_start_masks)).*)),
};
pub const id_continue = IDContinueType{
    .masks = @as(std.meta.fieldInfo(IDContinueType, .masks).type, @bitCast(@as(*const [id_continue_masks.len]u8, @ptrCast(id_continue_masks)).*)),
};
da7a3e32ef36?s=13&d=retro' width='13' height='13' alt='Gravatar' /> Jarred Sumner 1-2/+22 2022-12-03Update .gitignoreGravatar Jarred Sumner 1-0/+1 2022-12-03[test] Add a couple tests for subarray toEqualGravatar Jarred Sumner 1-0/+3 2022-12-03[fetch] Fix bug where .arrayBuffer() on an empty Response body returned a `Ui...Gravatar Jarred Sumner 1-1/+1 2022-12-03Don't invalidate previous file descriptro to avoid tripping assertionGravatar Jarred Sumner 1-5/+0 2022-12-03miscGravatar Jarred Sumner 3-1/+31 2022-12-03Add missing typeGravatar Jarred Sumner 1-0/+5 2022-12-03`process.stdout` and `process.stderr`Gravatar Jarred Sumner 15-564/+1537 2022-12-03simdutf ascii validation is about 20% faster on arm64 than our zig simd @Vect...Gravatar Jarred Sumner 1-0/+3 2022-12-03typo in readme (#1576)Gravatar Reed Jones 1-2/+2