英語版
このページの英語版を見る
core.internal.array.utils
このモジュールには、ランタイムフックの実装を支援するユーティリティ関数が含まれている。
License:
Distributed under the
Boost Software License 1.0.
(See accompanying file LICENSE)
- enum auto
isNoThrow
(alias F); - 関数F がnothrow スコープで呼び出し可能かどうかをチェックする。Parameters:
F パラメータを取らない関数 Returns:その関数がnothrow スコープで呼び出し可能であるかどうか。 - template
isPostblitNoThrow
(T) - T"型"のpostblitがnothrowで呼び出されるかどうかをチェックする。Parameters:
T チェックする型 Returns:postblitがnothrow のスコープで呼び出されるかどうかをチェックする。 存在しない場合はtrueを返す。 - pure nothrow void
__arrayClearPad
()(ref BlkInfoinfo
, size_tarrSize
, size_tpadSize
); - GCによってゼロにされないかもしれないパディングをクリアする(GCは、それが最初から要求されたサイズ内にあると仮定するが、実際には割り当てられたサイズの末尾にある)。 パディングをクリアする。 ブロックの末尾にある)。Parameters:
BlkInfo info
配列割り当てデータ size_t arrSize
配列のサイズ(バイト size_t padSize
パディングのサイズ(バイト - @trusted BlkInfo
__arrayAlloc
(T)(size_tarrSize
); - 適切なパディングを適用し、既存のブロックから継承されていない場合はブロック属性を割り当てる。 ブロック属性を割り当てる。Parameters:
size_t arrSize
割り当てられた配列のサイズ(バイト Returns:BlkInfo 割り当てメタデータを含む - pure nothrow void*
__arrayStart
()(return scope BlkInfoinfo
); - 与えられたブロックの配列の先頭を取得する。Parameters:
BlkInfo info
配列のメタデータ Returns:配列の開始位置へのポインタ。 - bool
__setArrayAllocLength
(T)(ref BlkInfoinfo
, size_tnewLength
, boolisShared
, size_toldLength
= ~0); - 配列ブロックの確保された長さを設定する。 これは、配列 が追加されたり、その長さが設定されたりしたときに呼び出される。ブロック < PAGESIZE の場合、確保されたブロックは以下のようになる: |elem0|elem1|elem2|...|elemN-1|emptyspace|N*elemsize| 最後に確保される長さのサイズはブロックサイズに依存する: 16〜256バイトのブロックは8ビット長である。 512からpagesize/2バイトのブロックは16ビット長である。 ブロック >= pagesizeの場合、長さはsize_tであり、ブロックの先頭にある。 ブロックの先頭にある。 なぜこのようにしなければならないかというと、ブロックはもっと多くのページに広がる可能性があるからだ。 そのため、ブロックの長さがブロックの末尾にある場合は信用できない。 というのも、ブロックはさらにページが伸びる可能性があるからだ。 もし将来 将来、ブロックが共有されていないことを証明できれば、これを変更できるかもしれない。 しかし、それが重要かどうかはわからない。 長さを先頭に置くためには、ブロックが正しく整列されるように16バイトのバッファスペースを用意しなければならない。 のバッファスペースを用意しなければならない。 x86では、ある種の x86では、ある種のSSE命令は、データが16バイトにアライメントされていなければ動作しない。 さらに さらに、次のブロックへの偶発的なポインタを防ぐために、センチネルバイトが必要である。 余分なオーバーヘッドが発生するため、これはページ・サイズ以上の場合にのみ行う。 ブロック・サイズに比べればオーバーヘッドは最小である。 つまり、これらのブロックでは次のようになる: N*elemsize|padding|elem0|elem1|...|elemN-1|emptyspace|sentinelbyte|``のようになる。 ここでelem0 、最初のバイトの16バイト後から始まる。
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku