diff options
author | MITSUNARI Shigeo <[email protected]> | 2014-03-14 09:03:17 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2014-03-14 09:03:17 +0900 |
commit | f22576ad4c04cf15825140985a6eeb6ed6596f84 (patch) | |
tree | 0aafde1d4a6612cabb4908f808c67434ebe0152c | |
parent | b50b2b247190982e6e020a7c205367a2c0cb4ad1 (diff) | |
download | xbyak-f22576ad4c04cf15825140985a6eeb6ed6596f84.tar.gz xbyak-f22576ad4c04cf15825140985a6eeb6ed6596f84.zip |
add testLocal for grow
-rw-r--r-- | test/jmp.cpp | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/test/jmp.cpp b/test/jmp.cpp index 36221f6..3edf301 100644 --- a/test/jmp.cpp +++ b/test/jmp.cpp @@ -548,60 +548,62 @@ void testMovLabel2() } struct TestLocal : public Xbyak::CodeGenerator { - TestLocal() + TestLocal(bool grow) + : Xbyak::CodeGenerator(grow ? 128 : 4096, grow ? Xbyak::AutoGrow : 0) { xor_(eax, eax); inLocalLabel(); - jmp("start0"); + jmp("start0", T_NEAR); L(".back"); inc(eax); // 8 - jmp(".next"); + jmp(".next", T_NEAR); L("start2"); inc(eax); // 7 - jmp(".back"); + jmp(".back", T_NEAR); inLocalLabel(); L(".back"); inc(eax); // 5 - jmp(".next"); + putNop(this, 128); + jmp(".next", T_NEAR); L("start1"); inc(eax); // 4 - jmp(".back"); + jmp(".back", T_NEAR); inLocalLabel(); L(".back"); inc(eax); // 2 - jmp(".next"); + jmp(".next", T_NEAR); L("start0"); inc(eax); // 1 - jmp(".back"); + jmp(".back", T_NEAR); L(".next"); inc(eax); // 3 - jmp("start1"); + jmp("start1", T_NEAR); outLocalLabel(); L(".next"); inc(eax); // 6 - jmp("start2"); + jmp("start2", T_NEAR); outLocalLabel(); L(".next"); inc(eax); // 9 - jmp("start3"); + jmp("start3", T_NEAR); inLocalLabel(); L(".back"); inc(eax); // 14 - jmp("exit"); + jmp("exit", T_NEAR); L("start4"); inc(eax); // 13 - jmp(".back"); + jmp(".back", T_NEAR); outLocalLabel(); L("start3"); inc(eax); // 10 inLocalLabel(); - jmp(".next"); + jmp(".next", T_NEAR); L(".back"); inc(eax); // 12 - jmp("start4"); + jmp("start4", T_NEAR); L(".next"); inc(eax); // 11 - jmp(".back"); + jmp(".back", T_NEAR); outLocalLabel(); outLocalLabel(); L("exit"); @@ -612,12 +614,16 @@ struct TestLocal : public Xbyak::CodeGenerator { void test6() { - puts("test6"); - TestLocal code; - int (*f)() = code.getCode<int (*)()>(); - int a = f(); - if (a != 15) { - printf("ERR a=%d\n", a); + for (int i = 0; i < 2; i++) { + const bool grow = i == 1; + printf("test6 grow=%d\n", i); + TestLocal code(grow); + if (grow) code.ready(); + int (*f)() = code.getCode<int (*)()>(); + int a = f(); + if (a != 15) { + printf("ERR a=%d\n", a); + } } } |