Skip to content

Commit

Permalink
fix biging parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
jaekwon committed Apr 19, 2021
1 parent e848c65 commit 9894f94
Show file tree
Hide file tree
Showing 2 changed files with 171 additions and 4 deletions.
18 changes: 17 additions & 1 deletion op_eval.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"math/big"
"strconv"
"strings"
)

func (m *Machine) doOpEval() {
Expand Down Expand Up @@ -40,7 +41,22 @@ func (m *Machine) doOpEval() {
bi := big.NewInt(0)
// TODO optimize.
// TODO deal with base.
bi.SetString(x.Value, 10)
if len(x.Value) > 2 && x.Value[0] == '0' &&
strings.ContainsAny(x.Value[1:2], "bBoOxX") {
_, ok := bi.SetString(x.Value[2:], 16)
if !ok {
panic(fmt.Sprintf(
"invalid integer constant: %s",
x.Value))
}
} else {
_, ok := bi.SetString(x.Value, 10)
if !ok {
panic(fmt.Sprintf(
"invalid integer constant: %s",
x.Value))
}
}
m.PushValue(TypedValue{
T: UntypedBigintType,
V: BigintValue{V: bi},
Expand Down
157 changes: 154 additions & 3 deletions tests/files/l3.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,163 @@
package main

//func myprint(i int) { println(i) }

func main() {
for a := 0; a < 20000000; a++ {
if a&0x8ffff == 0x80000 {
println(a)
//myprint(a)
}
}
}

// Output:
// 524288
// 589824
// 655360
// 720896
// 786432
// 851968
// 917504
// 983040
// 1572864
// 1638400
// 1703936
// 1769472
// 1835008
// 1900544
// 1966080
// 2031616
// 2621440
// 2686976
// 2752512
// 2818048
// 2883584
// 2949120
// 3014656
// 3080192
// 3670016
// 3735552
// 3801088
// 3866624
// 3932160
// 3997696
// 4063232
// 4128768
// 4718592
// 4784128
// 4849664
// 4915200
// 4980736
// 5046272
// 5111808
// 5177344
// 5767168
// 5832704
// 5898240
// 5963776
// 6029312
// 6094848
// 6160384
// 6225920
// 6815744
// 6881280
// 6946816
// 7012352
// 7077888
// 7143424
// 7208960
// 7274496
// 7864320
// 7929856
// 7995392
// 8060928
// 8126464
// 8192000
// 8257536
// 8323072
// 8912896
// 8978432
// 9043968
// 9109504
// 9175040
// 9240576
// 9306112
// 9371648
// 9961472
// 10027008
// 10092544
// 10158080
// 10223616
// 10289152
// 10354688
// 10420224
// 11010048
// 11075584
// 11141120
// 11206656
// 11272192
// 11337728
// 11403264
// 11468800
// 12058624
// 12124160
// 12189696
// 12255232
// 12320768
// 12386304
// 12451840
// 12517376
// 13107200
// 13172736
// 13238272
// 13303808
// 13369344
// 13434880
// 13500416
// 13565952
// 14155776
// 14221312
// 14286848
// 14352384
// 14417920
// 14483456
// 14548992
// 14614528
// 15204352
// 15269888
// 15335424
// 15400960
// 15466496
// 15532032
// 15597568
// 15663104
// 16252928
// 16318464
// 16384000
// 16449536
// 16515072
// 16580608
// 16646144
// 16711680
// 17301504
// 17367040
// 17432576
// 17498112
// 17563648
// 17629184
// 17694720
// 17760256
// 18350080
// 18415616
// 18481152
// 18546688
// 18612224
// 18677760
// 18743296
// 18808832
// 19398656
// 19464192
// 19529728
// 19595264
// 19660800
// 19726336
// 19791872
// 19857408

0 comments on commit 9894f94

Please sign in to comment.