On 12/5/15 6:54 PM, Chris Wright wrote:

I've never used a release build of anything. Bounds checking isn't that
expensive.


void main()
{
    int[] arr = new int[10];
    assert(arr.capacity == 1000); // obviously wrong
    arr[10] = 5;
}

dmd -release -boundscheck=on testboundscheck.d

./testboundscheck

core.exception.RangeError@testboundscheck.d(5): Range violation
----------------
4 testboundscheck 0x000000010df8454d _d_arraybounds + 97 5 testboundscheck 0x000000010df77da6 testboundscheck.__array + 38
6   testboundscheck                     0x000000010df77d71 _Dmain + 49
7 testboundscheck 0x000000010df94e83 D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv + 39 8 testboundscheck 0x000000010df94dbb void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) + 55 9 testboundscheck 0x000000010df94e28 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() + 44 10 testboundscheck 0x000000010df94dbb void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) + 55
11  testboundscheck                     0x000000010df94d0d _d_run_main + 497
12  testboundscheck                     0x000000010df77e0f main + 15
13  libdyld.dylib                       0x00007fff928d15c8 start + 0
14  ???                                 0x0000000000000000 0x0 + 0

-Steve

Reply via email to