19258b6bc66e09368ada54001f619d53b4fc976d5ager@chromium.org// Copyright 2006-2008 the V8 project authors. All rights reserved.
2750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// Redistribution and use in source and binary forms, with or without
3750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// modification, are permitted provided that the following conditions are
4750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// met:
5750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//
6750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//     * Redistributions of source code must retain the above copyright
7750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//       notice, this list of conditions and the following disclaimer.
8750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//     * Redistributions in binary form must reproduce the above
9750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//       copyright notice, this list of conditions and the following
10750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//       disclaimer in the documentation and/or other materials provided
11750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//       with the distribution.
12750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//     * Neither the name of Google Inc. nor the names of its
13750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//       contributors may be used to endorse or promote products derived
14750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//       from this software without specific prior written permission.
15750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org//
16750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
279a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com//
289a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com// Tests of the TokenLock class from lock.h
299a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com
309a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include <pthread.h>
319a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include <stdlib.h>
329a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include <unistd.h>  // for usleep()
339a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com
34196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h"
359a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com
365de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org#include "src/base/platform/platform.h"
37196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "test/cctest/cctest.h"
389a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com
399a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comusing namespace ::v8::internal;
409a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com
419a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com
429a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comTEST(VirtualMemory) {
435de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org  v8::base::VirtualMemory* vm = new v8::base::VirtualMemory(1 * MB);
449a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  CHECK(vm->IsReserved());
459a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  void* block_addr = vm->address();
469a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  size_t block_size = 4 * KB;
479a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  CHECK(vm->Commit(block_addr, block_size, false));
489a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  // Check whether we can write to memory.
499a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  int* addr = static_cast<int*>(block_addr);
509a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  addr[KB-1] = 2;
519a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  CHECK(vm->Uncommit(block_addr, block_size));
529a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com  delete vm;
539a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com}
54