stack_tags.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package gls
  2. // so, basically, we're going to encode integer tags in base-16 on the stack
  3. const (
  4. bitWidth = 4
  5. )
  6. func addStackTag(tag uint, context_call func()) {
  7. if context_call == nil {
  8. return
  9. }
  10. markS(tag, context_call)
  11. }
  12. func markS(tag uint, cb func()) { _m(tag, cb) }
  13. func mark0(tag uint, cb func()) { _m(tag, cb) }
  14. func mark1(tag uint, cb func()) { _m(tag, cb) }
  15. func mark2(tag uint, cb func()) { _m(tag, cb) }
  16. func mark3(tag uint, cb func()) { _m(tag, cb) }
  17. func mark4(tag uint, cb func()) { _m(tag, cb) }
  18. func mark5(tag uint, cb func()) { _m(tag, cb) }
  19. func mark6(tag uint, cb func()) { _m(tag, cb) }
  20. func mark7(tag uint, cb func()) { _m(tag, cb) }
  21. func mark8(tag uint, cb func()) { _m(tag, cb) }
  22. func mark9(tag uint, cb func()) { _m(tag, cb) }
  23. func markA(tag uint, cb func()) { _m(tag, cb) }
  24. func markB(tag uint, cb func()) { _m(tag, cb) }
  25. func markC(tag uint, cb func()) { _m(tag, cb) }
  26. func markD(tag uint, cb func()) { _m(tag, cb) }
  27. func markE(tag uint, cb func()) { _m(tag, cb) }
  28. func markF(tag uint, cb func()) { _m(tag, cb) }
  29. var pc_lookup = make(map[uintptr]int8, 17)
  30. var mark_lookup [16]func(uint, func())
  31. func _m(tag_remainder uint, cb func()) {
  32. if tag_remainder == 0 {
  33. cb()
  34. } else {
  35. mark_lookup[tag_remainder&0xf](tag_remainder>>bitWidth, cb)
  36. }
  37. }