fix userPtr mode
diff --git a/readme.md b/readme.md
index d51ee5c..48f51e5 100644
--- a/readme.md
+++ b/readme.md
@@ -1,5 +1,5 @@
-Xbyak 3.50 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
+Xbyak 3.51 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
=============
Abstract
@@ -222,6 +222,7 @@
History
-------------
+* 2012/Mar/23 ver 3.51 fix userPtr mode
* 2012/Mar/19 ver 3.50 support AutoGrow mode
* 2011/Nov/09 ver 3.05 fix bit property of rip addresing / support movsxd
* 2011/Aug/15 ver 3.04 fix dealing with imm8 such as add(dword [ebp-8], 0xda); (thanks to lolcat)
diff --git a/readme.txt b/readme.txt
index 6498e54..943155e 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
- C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.50
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.51
-----------------------------------------------------------------------------
◎概要
@@ -242,6 +242,7 @@
-----------------------------------------------------------------------------
◎履歴
+2012/03/23 ver 3.51 userPtrモードがバグったのを修正
2012/03/19 ver 3.50 AutoGrowモードサポート
2011/11/09 ver 3.05 rip相対の64bitサイズ以外の扱いのバグ修正 / movsxdサポート
2011/08/15 ver 3.04 add(dword [ebp-8], 0xda);などにおけるimm8の扱いのバグ修正(thanks to lolcat)
diff --git a/sample/test0.cpp b/sample/test0.cpp
index c7504d1..cf3db88 100644
--- a/sample/test0.cpp
+++ b/sample/test0.cpp
@@ -129,6 +129,10 @@
CodeArray::protect(p, codeSize, true);
Sample s(p, codeSize);
int (*func)(int) = (int (*)(int))s.getCode();
+ if ((uint8*)func != p) {
+ fprintf(stderr, "internal error %p %p\n", p, func);
+ return 1;
+ }
printf("0 + ... + %d = %d\n", 100, func(100));
CodeArray::protect(p, codeSize, false);
}
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index b405a8b..5c0de25 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -53,7 +53,7 @@
enum {
DEFAULT_MAX_CODE_SIZE = 4096,
- VERSION = 0x3500, /* 0xABCD = A.BC(D) */
+ VERSION = 0x3510, /* 0xABCD = A.BC(D) */
};
#ifndef MIE_INTEGER_TYPE_DEFINED
@@ -422,6 +422,7 @@
Type getType(size_t maxSize, void *userPtr) const
{
if (userPtr == AutoGrow) return AUTO_GROW;
+ if (userPtr) return USER_BUF;
if (maxSize <= MAX_FIXED_BUF_SIZE) return FIXED_BUF;
return ALLOC_BUF;
}
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index 9b4eccd..4283b51 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -1,4 +1,4 @@
-const char *getVersionString() const { return "3.50"; }
+const char *getVersionString() const { return "3.51"; }
void packssdw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x6B); }
void packsswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x63); }
void packuswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x67); }