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