| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 // Support for ll_prof.py. | 337 // Support for ll_prof.py. |
| 338 // | 338 // |
| 339 // The Linux profiler built into the kernel logs all mmap's with | 339 // The Linux profiler built into the kernel logs all mmap's with |
| 340 // PROT_EXEC so that analysis tools can properly attribute ticks. We | 340 // PROT_EXEC so that analysis tools can properly attribute ticks. We |
| 341 // do a mmap with a name known by ll_prof.py and immediately munmap | 341 // do a mmap with a name known by ll_prof.py and immediately munmap |
| 342 // it. This injects a GC marker into the stream of events generated | 342 // it. This injects a GC marker into the stream of events generated |
| 343 // by the kernel and allows us to synchronize V8 code log and the | 343 // by the kernel and allows us to synchronize V8 code log and the |
| 344 // kernel log. | 344 // kernel log. |
| 345 int size = sysconf(_SC_PAGESIZE); | 345 int size = sysconf(_SC_PAGESIZE); |
| 346 FILE* f = fopen(FLAG_gc_fake_mmap, "w+"); | 346 FILE* f = fopen(FLAG_gc_fake_mmap, "w+"); |
| 347 if (f == NULL) { |
| 348 OS::PrintError("Failed to open %s\n", FLAG_gc_fake_mmap); |
| 349 OS::Abort(); |
| 350 } |
| 347 void* addr = mmap(NULL, size, PROT_READ | PROT_EXEC, MAP_PRIVATE, | 351 void* addr = mmap(NULL, size, PROT_READ | PROT_EXEC, MAP_PRIVATE, |
| 348 fileno(f), 0); | 352 fileno(f), 0); |
| 349 ASSERT(addr != MAP_FAILED); | 353 ASSERT(addr != MAP_FAILED); |
| 350 OS::Free(addr, size); | 354 OS::Free(addr, size); |
| 351 fclose(f); | 355 fclose(f); |
| 352 } | 356 } |
| 353 | 357 |
| 354 | 358 |
| 355 int OS::StackWalk(Vector<OS::StackFrame> frames) { | 359 int OS::StackWalk(Vector<OS::StackFrame> frames) { |
| 356 // backtrace is a glibc extension. | 360 // backtrace is a glibc extension. |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 limit_mutex = CreateMutex(); | 739 limit_mutex = CreateMutex(); |
| 736 } | 740 } |
| 737 | 741 |
| 738 | 742 |
| 739 void OS::TearDown() { | 743 void OS::TearDown() { |
| 740 delete limit_mutex; | 744 delete limit_mutex; |
| 741 } | 745 } |
| 742 | 746 |
| 743 | 747 |
| 744 } } // namespace v8::internal | 748 } } // namespace v8::internal |
| OLD | NEW |