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)).*)),
};
we're iterating onGravatar Jarred Sumner 4-24/+47 2022-04-01Update response.zigGravatar Jarred Sumner 1-1/+1 2022-04-01[bun.js] Fix use-after-free in Bun.writeGravatar Jarred Sumner 1-3/+3 2022-04-01Test written lengthGravatar Jarred Sumner 1-1/+1 2022-04-01http file exampleGravatar Jarred Sumner 2-0/+25 2022-04-01Fix sendfile() after changes to blobGravatar Jarred Sumner 1-500/+567 2022-04-01Fix mimetype valueGravatar Jarred Sumner 1-4/+37 2022-04-01Make `FetchHeaders` workjarred/fetchheadersGravatar Jarred Sumner 9-104/+95 2022-04-01[bun.js] Expose `ErrorEvent`Gravatar Jarred Sumner 2-37/+52 2022-04-01[bun.js] Use `Headers` from WebKit instead of customGravatar Jarred Sumner 44-843/+5918 2022-03-31Update WebKitGravatar Jarred Sumner 1-0/+0 2022-03-31Delete unusedGravatar Jarred Sumner 1-5/+0 2022-03-31Allow a little leeway when HMRGravatar Jarred Sumner 1-1/+2 2022-03-31Fix more infinite loopsGravatar Jarred Sumner 1-2/+2 2022-03-31Bugfixes to how we build WebCore codeGravatar Jarred Sumner 29-170/+384 2022-03-31[bun dev] Re-create the shared buffer for each websocketGravatar Jarred Sumner 1-6/+5 2022-03-31[bun dev] Improve HMR reliability when filesystem is slow or reading large filesGravatar Jarred Sumner 2-19/+68 2022-03-31Fix possible infinite loopsGravatar Jarred Sumner 1-3/+3 2022-03-30Update bindings.cppGravatar Jarred Sumner 1-0/+24 2022-03-30[bun.js] Support `file://` URLs in node fsGravatar Jarred Sumner 9-6/+102 2022-03-30Bump target next version to 12.1.3Gravatar Jarred Sumner 1-1/+1 2022-03-30Add test for Bun.hash that runs it with a Uint8ArrayGravatar Jarred Sumner 1-8/+16