aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <[email protected]>2020-05-10 14:21:18 +0900
committerMITSUNARI Shigeo <[email protected]>2020-05-10 14:43:41 +0900
commit82b70e665918efc2ee348091742fd0237b3b68c5 (patch)
tree27222af74bb0c7876aabf6849ee152c3f00741b7
parent2f6d9e3450fa5cc7fdf560dab9ed984c04997886 (diff)
downloadxbyak-82b70e665918efc2ee348091742fd0237b3b68c5.tar.gz
xbyak-82b70e665918efc2ee348091742fd0237b3b68c5.zip
v5.911 ; XBYAK_USE_MMAP_ALLOCATOR is definedv5.911
-rw-r--r--readme.md6
-rw-r--r--readme.txt5
-rw-r--r--xbyak/xbyak.h6
-rw-r--r--xbyak/xbyak_mnemonic.h2
4 files changed, 13 insertions, 6 deletions
diff --git a/readme.md b/readme.md
index edc9e5c..f143140 100644
--- a/readme.md
+++ b/readme.md
@@ -1,6 +1,6 @@
[![Build Status](https://travis-ci.org/herumi/xbyak.png)](https://travis-ci.org/herumi/xbyak)
-# Xbyak 5.91 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
+# Xbyak 5.911 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
## Abstract
@@ -15,6 +15,9 @@ Xbyak is a C++ header library that enables dynamically to assemble x86(IA32), x6
Use `and_()`, `or_()`, ... instead of `and()`, `or()`.
If you want to use them, then specify `-fno-operator-names` option to gcc/clang.
+### News
+- `XBYAK_USE_MMAP_ALLOCATOR` will be defined on Linux/macOS unless `XBYAK_DONT_USE_MMAP_ALLOCATOR` is defined.
+
### Supported OS
* Windows Xp, Vista, Windows 7, Windows 10(32bit, 64bit)
@@ -425,6 +428,7 @@ modified new BSD License
http://opensource.org/licenses/BSD-3-Clause
## History
+* 2020/May/10 ver 5.911 XBYAK_USE_MMAP_ALLOCATOR is defined unless XBYAK_DONT_USE_MMAP_ALLOCATOR is defined.
* 2020/Apr/20 ver 5.91 accept mask register k0 (it means no mask)
* 2020/Apr/09 ver 5.90 kmov{b,d,w,q} throws exception for an unsupported register
* 2020/Feb/26 ver 5.891 fix typo of type
diff --git a/readme.txt b/readme.txt
index 042826c..f806628 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
- C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.91
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.911
-----------------------------------------------------------------------------
◎概要
@@ -35,6 +35,7 @@ xbyak_mnemonic.h
Linuxではmake installで/usr/local/include/xbyakにコピーされます。
-----------------------------------------------------------------------------
◎下位互換性の破れ
+* XBYAK_USE_MMAP_ALLOCATORがデフォルトで有効になりました。従来の方式にする場合はXBYAK_DONT_USE_MMAP_ALLOCATORを定義してください。
* Xbyak::Errorの型をenumからclassに変更
** 従来のenumの値をとるにはintにキャストしてください。
* (古い)Reg32eクラスを(新しい)Reg32eとRegExpに分ける。
@@ -52,7 +53,6 @@ map countの最大値は/proc/sys/vm/max_map_countに書かれています。
デフォルトでは3万個ほどのXbyak::CodeGeneratorインスタンスを生成するとエラーになります。
test/mprotect_test.cppで確認できます。
これを避けるためにはmmapを使うMmapAllocatorを使ってください。
-将来この挙動がデフォルトになるかもしれません。
AutoGrowモード追加
@@ -371,6 +371,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から
-----------------------------------------------------------------------------
◎履歴
+2020/05/10 ver 5.911 Linux/macOSでXBYAK_USE_MMAP_ALLOCATORがデフォルト有効になる
2020/04/20 ver 5.91 マスクレジスタk0を受け入れる(マスクをしない)
2020/04/09 ver 5.90 kmov{b,w,d,q}がサポートされないレジスタを受けると例外を投げる
2020/02/26 ver 5.891 zm0のtype修正
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index 41409ec..57ab5ca 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -24,7 +24,9 @@
// #define XBYAK_DISABLE_AVX512
-//#define XBYAK_USE_MMAP_ALLOCATOR
+#if !defined(XBYAK_USE_MMAP_ALLOCATOR) && !defined(XBYAK_DONT_USE_MMAP_ALLOCATOR)
+ #define XBYAK_USE_MMAP_ALLOCATOR
+#endif
#if !defined(__GNUC__) || defined(__MINGW32__)
#undef XBYAK_USE_MMAP_ALLOCATOR
#endif
@@ -115,7 +117,7 @@ namespace Xbyak {
enum {
DEFAULT_MAX_CODE_SIZE = 4096,
- VERSION = 0x5910 /* 0xABCD = A.BC(D) */
+ VERSION = 0x5911 /* 0xABCD = A.BC(D) */
};
#ifndef MIE_INTEGER_TYPE_DEFINED
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index f0ecb14..124bd49 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -1,4 +1,4 @@
-const char *getVersionString() const { return "5.91"; }
+const char *getVersionString() const { return "5.911"; }
void adc(const Operand& op, uint32 imm) { opRM_I(op, imm, 0x10, 2); }
void adc(const Operand& op1, const Operand& op2) { opRM_RM(op1, op2, 0x10); }
void adcx(const Reg32e& reg, const Operand& op) { opGen(reg, op, 0xF6, 0x66, isREG32_REG32orMEM, NONE, 0x38); }