Home | History | Annotate | Download | only in src
      1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
      2 // Redistribution and use in source and binary forms, with or without
      3 // modification, are permitted provided that the following conditions are
      4 // met:
      5 //
      6 //     * Redistributions of source code must retain the above copyright
      7 //       notice, this list of conditions and the following disclaimer.
      8 //     * Redistributions in binary form must reproduce the above
      9 //       copyright notice, this list of conditions and the following
     10 //       disclaimer in the documentation and/or other materials provided
     11 //       with the distribution.
     12 //     * Neither the name of Google Inc. nor the names of its
     13 //       contributors may be used to endorse or promote products derived
     14 //       from this software without specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 
     28 // Platform specific code for NULLOS goes here
     29 
     30 // Minimal include to get access to abort, fprintf and friends for bootstrapping
     31 // messages.
     32 #include <stdio.h>
     33 #include <stdlib.h>
     34 
     35 #include "v8.h"
     36 
     37 #include "platform.h"
     38 #include "vm-state-inl.h"
     39 
     40 
     41 namespace v8 {
     42 namespace internal {
     43 
     44 // Give V8 the opportunity to override the default ceil behaviour.
     45 double ceiling(double x) {
     46   UNIMPLEMENTED();
     47   return 0;
     48 }
     49 
     50 
     51 // Give V8 the opportunity to override the default fmod behavior.
     52 double modulo(double x, double y) {
     53   UNIMPLEMENTED();
     54   return 0;
     55 }
     56 
     57 
     58 double fast_sin(double x) {
     59   UNIMPLEMENTED();
     60   return 0;
     61 }
     62 
     63 
     64 double fast_cos(double x) {
     65   UNIMPLEMENTED();
     66   return 0;
     67 }
     68 
     69 
     70 double fast_tan(double x) {
     71   UNIMPLEMENTED();
     72   return 0;
     73 }
     74 
     75 
     76 double fast_log(double x) {
     77   UNIMPLEMENTED();
     78   return 0;
     79 }
     80 
     81 
     82 // Initialize OS class early in the V8 startup.
     83 void OS::SetUp() {
     84   // Seed the random number generator.
     85   UNIMPLEMENTED();
     86 }
     87 
     88 
     89 void OS::PostSetUp() {
     90   UNIMPLEMENTED();
     91 }
     92 
     93 
     94 // Returns the accumulated user time for thread.
     95 int OS::GetUserTime(uint32_t* secs,  uint32_t* usecs) {
     96   UNIMPLEMENTED();
     97   *secs = 0;
     98   *usecs = 0;
     99   return 0;
    100 }
    101 
    102 
    103 // Returns current time as the number of milliseconds since
    104 // 00:00:00 UTC, January 1, 1970.
    105 double OS::TimeCurrentMillis() {
    106   UNIMPLEMENTED();
    107   return 0;
    108 }
    109 
    110 
    111 // Returns ticks in microsecond resolution.
    112 int64_t OS::Ticks() {
    113   UNIMPLEMENTED();
    114   return 0;
    115 }
    116 
    117 
    118 // Returns a string identifying the current timezone taking into
    119 // account daylight saving.
    120 const char* OS::LocalTimezone(double time) {
    121   UNIMPLEMENTED();
    122   return "<none>";
    123 }
    124 
    125 
    126 // Returns the daylight savings offset in milliseconds for the given time.
    127 double OS::DaylightSavingsOffset(double time) {
    128   UNIMPLEMENTED();
    129   return 0;
    130 }
    131 
    132 
    133 int OS::GetLastError() {
    134   UNIMPLEMENTED();
    135   return 0;
    136 }
    137 
    138 
    139 // Returns the local time offset in milliseconds east of UTC without
    140 // taking daylight savings time into account.
    141 double OS::LocalTimeOffset() {
    142   UNIMPLEMENTED();
    143   return 0;
    144 }
    145 
    146 
    147 // Print (debug) message to console.
    148 void OS::Print(const char* format, ...) {
    149   UNIMPLEMENTED();
    150 }
    151 
    152 
    153 // Print (debug) message to console.
    154 void OS::VPrint(const char* format, va_list args) {
    155   // Minimalistic implementation for bootstrapping.
    156   vfprintf(stdout, format, args);
    157 }
    158 
    159 
    160 void OS::FPrint(FILE* out, const char* format, ...) {
    161   va_list args;
    162   va_start(args, format);
    163   VFPrint(out, format, args);
    164   va_end(args);
    165 }
    166 
    167 
    168 void OS::VFPrint(FILE* out, const char* format, va_list args) {
    169   vfprintf(out, format, args);
    170 }
    171 
    172 
    173 // Print error message to console.
    174 void OS::PrintError(const char* format, ...) {
    175   // Minimalistic implementation for bootstrapping.
    176   va_list args;
    177   va_start(args, format);
    178   VPrintError(format, args);
    179   va_end(args);
    180 }
    181 
    182 
    183 // Print error message to console.
    184 void OS::VPrintError(const char* format, va_list args) {
    185   // Minimalistic implementation for bootstrapping.
    186   vfprintf(stderr, format, args);
    187 }
    188 
    189 
    190 int OS::SNPrintF(char* str, size_t size, const char* format, ...) {
    191   UNIMPLEMENTED();
    192   return 0;
    193 }
    194 
    195 
    196 int OS::VSNPrintF(char* str, size_t size, const char* format, va_list args) {
    197   UNIMPLEMENTED();
    198   return 0;
    199 }
    200 
    201 
    202 uint64_t OS::CpuFeaturesImpliedByPlatform() {
    203   return 0;
    204 }
    205 
    206 
    207 double OS::nan_value() {
    208   UNIMPLEMENTED();
    209   return 0;
    210 }
    211 
    212 
    213 bool OS::ArmCpuHasFeature(CpuFeature feature) {
    214   UNIMPLEMENTED();
    215 }
    216 
    217 
    218 bool OS::ArmUsingHardFloat() {
    219   UNIMPLEMENTED();
    220 }
    221 
    222 
    223 bool OS::IsOutsideAllocatedSpace(void* address) {
    224   UNIMPLEMENTED();
    225   return false;
    226 }
    227 
    228 
    229 size_t OS::AllocateAlignment() {
    230   UNIMPLEMENTED();
    231   return 0;
    232 }
    233 
    234 
    235 void* OS::Allocate(const size_t requested,
    236                    size_t* allocated,
    237                    bool executable) {
    238   UNIMPLEMENTED();
    239   return NULL;
    240 }
    241 
    242 
    243 void OS::Free(void* buf, const size_t length) {
    244   // TODO(1240712): potential system call return value which is ignored here.
    245   UNIMPLEMENTED();
    246 }
    247 
    248 
    249 void OS::Guard(void* address, const size_t size) {
    250   UNIMPLEMENTED();
    251 }
    252 
    253 
    254 void OS::Sleep(int milliseconds) {
    255   UNIMPLEMENTED();
    256 }
    257 
    258 
    259 void OS::Abort() {
    260   // Minimalistic implementation for bootstrapping.
    261   abort();
    262 }
    263 
    264 
    265 void OS::DebugBreak() {
    266   UNIMPLEMENTED();
    267 }
    268 
    269 
    270 OS::MemoryMappedFile* OS::MemoryMappedFile::open(const char* name) {
    271   UNIMPLEMENTED();
    272   return NULL;
    273 }
    274 
    275 
    276 OS::MemoryMappedFile* OS::MemoryMappedFile::create(const char* name, int size,
    277     void* initial) {
    278   UNIMPLEMENTED();
    279   return NULL;
    280 }
    281 
    282 
    283 void OS::LogSharedLibraryAddresses() {
    284   UNIMPLEMENTED();
    285 }
    286 
    287 
    288 void OS::SignalCodeMovingGC() {
    289   UNIMPLEMENTED();
    290 }
    291 
    292 
    293 int OS::StackWalk(Vector<OS::StackFrame> frames) {
    294   UNIMPLEMENTED();
    295   return 0;
    296 }
    297 
    298 
    299 VirtualMemory::VirtualMemory(size_t size, void* address_hint) {
    300   UNIMPLEMENTED();
    301 }
    302 
    303 
    304 VirtualMemory::~VirtualMemory() {
    305   UNIMPLEMENTED();
    306 }
    307 
    308 
    309 bool VirtualMemory::IsReserved() {
    310   UNIMPLEMENTED();
    311   return false;
    312 }
    313 
    314 
    315 bool VirtualMemory::Commit(void* address, size_t size, bool executable) {
    316   UNIMPLEMENTED();
    317   return false;
    318 }
    319 
    320 
    321 bool VirtualMemory::Uncommit(void* address, size_t size) {
    322   UNIMPLEMENTED();
    323   return false;
    324 }
    325 
    326 
    327 bool VirtualMemory::Guard(void* address) {
    328   UNIMPLEMENTED();
    329   return false;
    330 }
    331 
    332 
    333 class Thread::PlatformData : public Malloced {
    334  public:
    335   PlatformData() {
    336     UNIMPLEMENTED();
    337   }
    338 
    339   void* pd_data_;
    340 };
    341 
    342 
    343 Thread::Thread(const Options& options)
    344     : data_(new PlatformData()),
    345       stack_size_(options.stack_size) {
    346   set_name(options.name);
    347   UNIMPLEMENTED();
    348 }
    349 
    350 
    351 Thread::Thread(const char* name)
    352     : data_(new PlatformData()),
    353       stack_size_(0) {
    354   set_name(name);
    355   UNIMPLEMENTED();
    356 }
    357 
    358 
    359 Thread::~Thread() {
    360   delete data_;
    361   UNIMPLEMENTED();
    362 }
    363 
    364 
    365 void Thread::set_name(const char* name) {
    366   strncpy(name_, name, sizeof(name_));
    367   name_[sizeof(name_) - 1] = '\0';
    368 }
    369 
    370 
    371 void Thread::Start() {
    372   UNIMPLEMENTED();
    373 }
    374 
    375 
    376 void Thread::Join() {
    377   UNIMPLEMENTED();
    378 }
    379 
    380 
    381 Thread::LocalStorageKey Thread::CreateThreadLocalKey() {
    382   UNIMPLEMENTED();
    383   return static_cast<LocalStorageKey>(0);
    384 }
    385 
    386 
    387 void Thread::DeleteThreadLocalKey(LocalStorageKey key) {
    388   UNIMPLEMENTED();
    389 }
    390 
    391 
    392 void* Thread::GetThreadLocal(LocalStorageKey key) {
    393   UNIMPLEMENTED();
    394   return NULL;
    395 }
    396 
    397 
    398 void Thread::SetThreadLocal(LocalStorageKey key, void* value) {
    399   UNIMPLEMENTED();
    400 }
    401 
    402 
    403 void Thread::YieldCPU() {
    404   UNIMPLEMENTED();
    405 }
    406 
    407 
    408 class NullMutex : public Mutex {
    409  public:
    410   NullMutex() : data_(NULL) {
    411     UNIMPLEMENTED();
    412   }
    413 
    414   virtual ~NullMutex() {
    415     UNIMPLEMENTED();
    416   }
    417 
    418   virtual int Lock() {
    419     UNIMPLEMENTED();
    420     return 0;
    421   }
    422 
    423   virtual int Unlock() {
    424     UNIMPLEMENTED();
    425     return 0;
    426   }
    427 
    428  private:
    429   void* data_;
    430 };
    431 
    432 
    433 Mutex* OS::CreateMutex() {
    434   UNIMPLEMENTED();
    435   return new NullMutex();
    436 }
    437 
    438 
    439 class NullSemaphore : public Semaphore {
    440  public:
    441   explicit NullSemaphore(int count) : data_(NULL) {
    442     UNIMPLEMENTED();
    443   }
    444 
    445   virtual ~NullSemaphore() {
    446     UNIMPLEMENTED();
    447   }
    448 
    449   virtual void Wait() {
    450     UNIMPLEMENTED();
    451   }
    452 
    453   virtual void Signal() {
    454     UNIMPLEMENTED();
    455   }
    456  private:
    457   void* data_;
    458 };
    459 
    460 
    461 Semaphore* OS::CreateSemaphore(int count) {
    462   UNIMPLEMENTED();
    463   return new NullSemaphore(count);
    464 }
    465 
    466 
    467 class ProfileSampler::PlatformData  : public Malloced {
    468  public:
    469   PlatformData() {
    470     UNIMPLEMENTED();
    471   }
    472 };
    473 
    474 
    475 ProfileSampler::ProfileSampler(int interval) {
    476   UNIMPLEMENTED();
    477   // Shared setup follows.
    478   data_ = new PlatformData();
    479   interval_ = interval;
    480   active_ = false;
    481 }
    482 
    483 
    484 ProfileSampler::~ProfileSampler() {
    485   UNIMPLEMENTED();
    486   // Shared tear down follows.
    487   delete data_;
    488 }
    489 
    490 
    491 void ProfileSampler::Start() {
    492   UNIMPLEMENTED();
    493 }
    494 
    495 
    496 void ProfileSampler::Stop() {
    497   UNIMPLEMENTED();
    498 }
    499 
    500 
    501 } }  // namespace v8::internal
    502