Skip to content

ElectronicRU/re2jitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

re2jitter

Основано на чудесном шаблоне Дениса https://github.com/pyos/re2jit-template/ Идея развита и доработана Александром Седовым, группа БПМИ143.

Что есть на настоящий момент?

JIT-компилятор, полностью понимающий опкоды RE2, даже всякие милые бесполезности типа неюникодной "границы слов". Принцип работы фактически такой же, как у RE2 NFA: у нас есть состояния, к которым прикреплён capture state. В отличие от RE2, процесс использует один массив (связную область памяти) и два указателя - чтения и записи. Память выделяется один раз из расчёта "чтобы точно хватило", обращения к памяти сведены к минимуму: почти все переменные хранятся в регистрах, никаких внешних функций не вызывается вообще. Задача состояла в том, чтобы быть максимально дружелюбными к кэшу.

JIT-компилятор работает только для x86-64, потому что использует всякую тёмную магию типа списков указателей на код (что недоступно чудесной библиотеке libjit) и RIP-relative addressing.

About

libjit-based JIT for RE2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published