Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1086)

Side by Side Diff: src/base/platform/platform.h

Issue 1325853003: [heap,cctest] Fix CodeRange tests that call AllocateRawMemory directly. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/base/platform/platform-linux.cc » ('j') | src/base/platform/platform-linux.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This module contains the platform-specific code. This make the rest of the 5 // This module contains the platform-specific code. This make the rest of the
6 // code less dependent on operating system, compilers and runtime libraries. 6 // code less dependent on operating system, compilers and runtime libraries.
7 // This module does specifically not deal with differences between different 7 // This module does specifically not deal with differences between different
8 // processor architecture. 8 // processor architecture.
9 // The platform classes have the same definition for all platforms. The 9 // The platform classes have the same definition for all platforms. The
10 // implementation for a particular platform is put in platform_<os>.cc. 10 // implementation for a particular platform is put in platform_<os>.cc.
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 private: 265 private:
266 static const int msPerSecond = 1000; 266 static const int msPerSecond = 1000;
267 267
268 #if V8_OS_POSIX 268 #if V8_OS_POSIX
269 static const char* GetGCFakeMMapFile(); 269 static const char* GetGCFakeMMapFile();
270 #endif 270 #endif
271 271
272 DISALLOW_IMPLICIT_CONSTRUCTORS(OS); 272 DISALLOW_IMPLICIT_CONSTRUCTORS(OS);
273 }; 273 };
274 274
275
275 // Represents and controls an area of reserved memory. 276 // Represents and controls an area of reserved memory.
276 // Control of the reserved memory can be assigned to another VirtualMemory 277 // Control of the reserved memory can be assigned to another VirtualMemory
277 // object by assignment or copy-contructing. This removes the reserved memory 278 // object by assignment or copy-contructing. This removes the reserved memory
278 // from the original object. 279 // from the original object.
279 class VirtualMemory { 280 class VirtualMemory {
280 public: 281 public:
281 // Empty VirtualMemory object, controlling no reserved memory. 282 // Empty VirtualMemory object, controlling no reserved memory.
282 VirtualMemory(); 283 VirtualMemory();
283 284
284 // Reserves virtual memory with size. 285 // Reserves virtual memory with size.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 323
323 // Creates a single guard page at the given address. 324 // Creates a single guard page at the given address.
324 bool Guard(void* address); 325 bool Guard(void* address);
325 326
326 void Release() { 327 void Release() {
327 DCHECK(IsReserved()); 328 DCHECK(IsReserved());
328 // Notice: Order is important here. The VirtualMemory object might live 329 // Notice: Order is important here. The VirtualMemory object might live
329 // inside the allocated region. 330 // inside the allocated region.
330 void* address = address_; 331 void* address = address_;
331 size_t size = size_; 332 size_t size = size_;
333 CHECK(InVM(address, size));
332 Reset(); 334 Reset();
333 bool result = ReleaseRegion(address, size); 335 bool result = ReleaseRegion(address, size);
334 USE(result); 336 USE(result);
335 DCHECK(result); 337 DCHECK(result);
336 } 338 }
337 339
338 // Assign control of the reserved region to a different VirtualMemory object. 340 // Assign control of the reserved region to a different VirtualMemory object.
339 // The old object is no longer functional (IsReserved() returns false). 341 // The old object is no longer functional (IsReserved() returns false).
340 void TakeControl(VirtualMemory* from) { 342 void TakeControl(VirtualMemory* from) {
341 DCHECK(!IsReserved()); 343 DCHECK(!IsReserved());
(...skipping 11 matching lines...) Expand all
353 // Must be called with a base pointer that has been returned by ReserveRegion 355 // Must be called with a base pointer that has been returned by ReserveRegion
354 // and the same size it was reserved with. 356 // and the same size it was reserved with.
355 static bool ReleaseRegion(void* base, size_t size); 357 static bool ReleaseRegion(void* base, size_t size);
356 358
357 // Returns true if OS performs lazy commits, i.e. the memory allocation call 359 // Returns true if OS performs lazy commits, i.e. the memory allocation call
358 // defers actual physical memory allocation till the first memory access. 360 // defers actual physical memory allocation till the first memory access.
359 // Otherwise returns false. 361 // Otherwise returns false.
360 static bool HasLazyCommits(); 362 static bool HasLazyCommits();
361 363
362 private: 364 private:
365 bool InVM(void* address, size_t size) {
366 return (reinterpret_cast<intptr_t>(address_) <=
367 reinterpret_cast<intptr_t>(address)) &&
368 (reinterpret_cast<intptr_t>(address_) + size_ >=
369 reinterpret_cast<intptr_t>(address) + size);
370 }
371
363 void* address_; // Start address of the virtual memory. 372 void* address_; // Start address of the virtual memory.
364 size_t size_; // Size of the virtual memory. 373 size_t size_; // Size of the virtual memory.
365 }; 374 };
366 375
367 376
368 // ---------------------------------------------------------------------------- 377 // ----------------------------------------------------------------------------
369 // Thread 378 // Thread
370 // 379 //
371 // Thread objects are used for creating and running threads. When the start() 380 // Thread objects are used for creating and running threads. When the start()
372 // method is called the new thread starts running the run() method in the new 381 // method is called the new thread starts running the run() method in the new
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 char name_[kMaxThreadNameLength]; 475 char name_[kMaxThreadNameLength];
467 int stack_size_; 476 int stack_size_;
468 Semaphore* start_semaphore_; 477 Semaphore* start_semaphore_;
469 478
470 DISALLOW_COPY_AND_ASSIGN(Thread); 479 DISALLOW_COPY_AND_ASSIGN(Thread);
471 }; 480 };
472 481
473 } } // namespace v8::base 482 } } // namespace v8::base
474 483
475 #endif // V8_BASE_PLATFORM_PLATFORM_H_ 484 #endif // V8_BASE_PLATFORM_PLATFORM_H_
OLDNEW
« no previous file with comments | « no previous file | src/base/platform/platform-linux.cc » ('j') | src/base/platform/platform-linux.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698