1f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// Copyright 2012 the V8 project authors. All rights reserved. 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file. 45a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 55a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org#ifndef V8_D8_H_ 65a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org#define V8_D8_H_ 75a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 87c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#ifndef V8_SHARED 9196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/allocation.h" 10196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/hashmap.h" 11196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/smart-pointers.h" 12196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h" 1384bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org#else 14196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "include/v8.h" 15ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org#include "src/base/compiler-specific.h" 16865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org#endif // !V8_SHARED 175a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 185a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.orgnamespace v8 { 195a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 205a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 217c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#ifndef V8_SHARED 22a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org// A single counter in a counter collection. 235a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.orgclass Counter { 245a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org public: 25a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org static const int kMaxNameSize = 64; 26d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int32_t* Bind(const char* name, bool histogram); 27d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int32_t* ptr() { return &count_; } 28d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int32_t count() { return count_; } 29d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int32_t sample_total() { return sample_total_; } 30d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org bool is_histogram() { return is_histogram_; } 31d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org void AddSample(int32_t sample); 325a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org private: 33d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int32_t count_; 34d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int32_t sample_total_; 35d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org bool is_histogram_; 36a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org uint8_t name_[kMaxNameSize]; 37a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org}; 38a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org 39a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org 40a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org// A set of counters and associated information. An instance of this 41a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org// class is stored directly in the memory-mapped counters file if 42a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org// the --map-counters options is used 43a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.orgclass CounterCollection { 44a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org public: 45a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org CounterCollection(); 46a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org Counter* GetNextCounter(); 47a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org private: 4828583c92ca8f528df625800519088ac88996d504jkummerow@chromium.org static const unsigned kMaxCounters = 512; 49a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org uint32_t magic_number_; 50a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org uint32_t max_counters_; 51a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org uint32_t max_name_size_; 52a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org uint32_t counters_in_use_; 53a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org Counter counters_[kMaxCounters]; 545a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org}; 555a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 565a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 57f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.orgclass CounterMap { 58f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org public: 59f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org CounterMap(): hash_map_(Match) { } 60f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org Counter* Lookup(const char* name) { 61f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org i::HashMap::Entry* answer = hash_map_.Lookup( 62f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org const_cast<char*>(name), 63f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org Hash(name), 64f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org false); 65f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org if (!answer) return NULL; 66f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org return reinterpret_cast<Counter*>(answer->value); 67f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org } 68f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org void Set(const char* name, Counter* value) { 69f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org i::HashMap::Entry* answer = hash_map_.Lookup( 70f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org const_cast<char*>(name), 71f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org Hash(name), 72f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org true); 73e3c177a423baa3c30225c4e422b6f6c76d38b951machenbach@chromium.org DCHECK(answer != NULL); 74f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org answer->value = value; 75f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org } 76f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org class Iterator { 77f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org public: 78f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org explicit Iterator(CounterMap* map) 79f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org : map_(&map->hash_map_), entry_(map_->Start()) { } 80f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org void Next() { entry_ = map_->Next(entry_); } 81f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org bool More() { return entry_ != NULL; } 82f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org const char* CurrentKey() { return static_cast<const char*>(entry_->key); } 83f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org Counter* CurrentValue() { return static_cast<Counter*>(entry_->value); } 84f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org private: 85f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org i::HashMap* map_; 86f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org i::HashMap::Entry* entry_; 87f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org }; 88e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 89f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org private: 90f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org static int Hash(const char* name); 91f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org static bool Match(void* key1, void* key2); 92f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org i::HashMap hash_map_; 93f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org}; 94865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org#endif // !V8_SHARED 95f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org 96f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org 9734e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.orgclass LineEditor { 9834e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org public: 9934e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org enum Type { DUMB = 0, READLINE = 1 }; 10034e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org LineEditor(Type type, const char* name); 10134e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org virtual ~LineEditor() { } 10234e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 1032efb900e7350b14be905abdeab077f3a64c583cfulan@chromium.org virtual Handle<String> Prompt(const char* prompt) = 0; 1046e196bfaf0e555d0c835390bb6ebc0a74484491dulan@chromium.org virtual bool Open(Isolate* isolate) { return true; } 10534e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org virtual bool Close() { return true; } 10634e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org virtual void AddHistory(const char* str) { } 10734e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 10834e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org const char* name() { return name_; } 1094a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org static LineEditor* Get() { return current_; } 11034e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org private: 11134e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org Type type_; 11234e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org const char* name_; 1134a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org static LineEditor* current_; 11434e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org}; 11534e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 11634e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 1176db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.orgclass SourceGroup { 1186db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org public: 11984bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org SourceGroup() : 1207c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#ifndef V8_SHARED 121e900018c7a2a695fde788911564da37535c7e736mstarzinger@chromium.org next_semaphore_(0), 122e900018c7a2a695fde788911564da37535c7e736mstarzinger@chromium.org done_semaphore_(0), 12383e168294456ca2f02db421a635f7d5f5d023966kmillikin@chromium.org thread_(NULL), 124865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org#endif // !V8_SHARED 12584bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org argv_(NULL), 12684bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org begin_offset_(0), 12755ee80713569ab0324fc8dcedcb5518501daa6a6ricow@chromium.org end_offset_(0) {} 1286db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 12983e168294456ca2f02db421a635f7d5f5d023966kmillikin@chromium.org ~SourceGroup(); 13083e168294456ca2f02db421a635f7d5f5d023966kmillikin@chromium.org 1316db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org void Begin(char** argv, int offset) { 1326db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org argv_ = const_cast<const char**>(argv); 1336db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org begin_offset_ = offset; 1346db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org } 1356db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1366db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org void End(int offset) { end_offset_ = offset; } 1376db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1388e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org void Execute(Isolate* isolate); 1396db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1407c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#ifndef V8_SHARED 1416db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org void StartExecuteInThread(); 1426db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org void WaitForThread(); 1436db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1446db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org private: 1455de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org class IsolateThread : public base::Thread { 1466db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org public: 1476db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org explicit IsolateThread(SourceGroup* group) 1485de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org : base::Thread(GetThreadOptions()), group_(group) {} 1496db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1506db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org virtual void Run() { 1516db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org group_->ExecuteInThread(); 1526db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org } 1536db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1546db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org private: 1556db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org SourceGroup* group_; 1566db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org }; 1576db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1585de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org static base::Thread::Options GetThreadOptions(); 1596db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org void ExecuteInThread(); 1606db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1615de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org base::Semaphore next_semaphore_; 1625de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org base::Semaphore done_semaphore_; 1635de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org base::Thread* thread_; 164865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org#endif // !V8_SHARED 1656db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1666db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org void ExitShell(int exit_code); 1678e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org Handle<String> ReadFile(Isolate* isolate, const char* name); 1686db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1696db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org const char** argv_; 1706db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org int begin_offset_; 1716db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org int end_offset_; 1726db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org}; 1736db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1746db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 1752c81ceb7f1e1ccf5f304be0646f4c1375941a7f2machenbach@chromium.orgclass BinaryResource : public v8::String::ExternalOneByteStringResource { 176659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org public: 177659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org BinaryResource(const char* string, int length) 178659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org : data_(string), 179659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org length_(length) { } 180659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org 181659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org ~BinaryResource() { 182659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org delete[] data_; 183659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org data_ = NULL; 184659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org length_ = 0; 185659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org } 186659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org 187659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org virtual const char* data() const { return data_; } 188659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org virtual size_t length() const { return length_; } 189659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org 190659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org private: 191659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org const char* data_; 192659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org size_t length_; 193659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org}; 194659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org 195659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org 1966db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.orgclass ShellOptions { 1976db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org public: 1984c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org ShellOptions() 1994c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org : script_executed(false), 2004c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org last_run(true), 2014c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org send_idle_notification(false), 2024c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org invoke_weak_callbacks(false), 2034c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org stress_opt(false), 2044c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org stress_deopt(false), 2054c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org interactive_shell(false), 2064c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org test_shell(false), 2074c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org dump_heap_constants(false), 2084c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org expected_to_throw(false), 2094c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org mock_arraybuffer_allocator(false), 2104c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org num_isolates(1), 2114c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org compile_options(v8::ScriptCompiler::kNoCompileOptions), 2124c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org isolate_sources(NULL), 2134c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org icu_data_file(NULL), 2144c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org natives_blob(NULL), 2154c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org snapshot_blob(NULL) {} 21684bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org 21734e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org ~ShellOptions() { 21834e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org delete[] isolate_sources; 21934e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org } 22034e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 221d06b9264b1c886fc80a100e9915cf8ae07fdb4e5machenbach@chromium.org bool use_interactive_shell() { 222d06b9264b1c886fc80a100e9915cf8ae07fdb4e5machenbach@chromium.org return (interactive_shell || !script_executed) && !test_shell; 223d06b9264b1c886fc80a100e9915cf8ae07fdb4e5machenbach@chromium.org } 224d06b9264b1c886fc80a100e9915cf8ae07fdb4e5machenbach@chromium.org 2256db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org bool script_executed; 2266db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org bool last_run; 22746839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org bool send_idle_notification; 228d06b9264b1c886fc80a100e9915cf8ae07fdb4e5machenbach@chromium.org bool invoke_weak_callbacks; 2296db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org bool stress_opt; 2306db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org bool stress_deopt; 2316db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org bool interactive_shell; 2326db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org bool test_shell; 233594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org bool dump_heap_constants; 23463ea3d20e0c5531a4bb0853218d5f746117edea1mvstanton@chromium.org bool expected_to_throw; 235af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org bool mock_arraybuffer_allocator; 2366db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org int num_isolates; 2374c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org v8::ScriptCompiler::CompileOptions compile_options; 2386db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org SourceGroup* isolate_sources; 239b5ed9300c59e8590c9dc588727b6564c244b0f5cmachenbach@chromium.org const char* icu_data_file; 240975b940441085887fc02bebf8877d5ec97e1e06cmachenbach@chromium.org const char* natives_blob; 241975b940441085887fc02bebf8877d5ec97e1e06cmachenbach@chromium.org const char* snapshot_blob; 2426db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org}; 2436db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 2447c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#ifdef V8_SHARED 24584bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.orgclass Shell { 24684bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org#else 24784bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.orgclass Shell : public i::AllStatic { 2487c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#endif // V8_SHARED 24983e168294456ca2f02db421a635f7d5f5d023966kmillikin@chromium.org 2505a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org public: 2514c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org static Local<UnboundScript> CompileString( 2524c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org Isolate* isolate, Local<String> source, Local<Value> name, 2534c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org v8::ScriptCompiler::CompileOptions compile_options); 2542bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org static bool ExecuteString(Isolate* isolate, 2552bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org Handle<String> source, 2565a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org Handle<Value> name, 2575a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org bool print_result, 2585a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org bool report_exceptions); 259c9c80823e038328f2e1060d7feef0762a50adf06ricow@chromium.org static const char* ToCString(const v8::String::Utf8Value& value); 2602bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org static void ReportException(Isolate* isolate, TryCatch* try_catch); 2618e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static Handle<String> ReadFile(Isolate* isolate, const char* name); 26257ff881caeb2e15b46ac9e4dfc00e378f7c5f929ulan@chromium.org static Local<Context> CreateEvaluationContext(Isolate* isolate); 2638e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static int RunMain(Isolate* isolate, int argc, char* argv[]); 26484bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org static int Main(int argc, char* argv[]); 26534e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org static void Exit(int exit_code); 26659297c735ad2a41156ae9c723a39ff259ad061e0jkummerow@chromium.org static void OnExit(); 26784bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org 2687c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#ifndef V8_SHARED 2692bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org static Handle<Array> GetCompletions(Isolate* isolate, 2702bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org Handle<String> text, 27184bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org Handle<String> full); 272a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org static int* LookupCounter(const char* name); 273d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org static void* CreateHistogram(const char* name, 274d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int min, 275d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org int max, 276d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org size_t buckets); 277d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org static void AddHistogramSample(void* histogram, int sample); 2786b0d137a5839eff3ce1a98ca9e12310027eff30fmachenbach@chromium.org static void MapCounters(v8::Isolate* isolate, const char* name); 27984bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org 280034539689f9600e463cd5273725c6269d0f3b8cbmachenbach@chromium.org static Local<Object> DebugMessageDetails(Isolate* isolate, 281034539689f9600e463cd5273725c6269d0f3b8cbmachenbach@chromium.org Handle<String> message); 282034539689f9600e463cd5273725c6269d0f3b8cbmachenbach@chromium.org static Local<Value> DebugCommandToJSONRequest(Isolate* isolate, 283034539689f9600e463cd5273725c6269d0f3b8cbmachenbach@chromium.org Handle<String> command); 284e94b5ff1e1e95fb2c8ef6bce66ce8533786d9792bmeurer@chromium.org 285e94b5ff1e1e95fb2c8ef6bce66ce8533786d9792bmeurer@chromium.org static void PerformanceNow(const v8::FunctionCallbackInfo<v8::Value>& args); 286865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org#endif // !V8_SHARED 2875a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 288d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmCurrent(const v8::FunctionCallbackInfo<v8::Value>& args); 289d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmOwner(const v8::FunctionCallbackInfo<v8::Value>& args); 290d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmGlobal(const v8::FunctionCallbackInfo<v8::Value>& args); 291d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmCreate(const v8::FunctionCallbackInfo<v8::Value>& args); 292d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmDispose(const v8::FunctionCallbackInfo<v8::Value>& args); 293d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmSwitch(const v8::FunctionCallbackInfo<v8::Value>& args); 294d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmEval(const v8::FunctionCallbackInfo<v8::Value>& args); 295d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RealmSharedGet(Local<String> property, 296d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org const PropertyCallbackInfo<Value>& info); 29732d7dbafe29be06cec1edd36c31fbe2865c799f4ulan@chromium.org static void RealmSharedSet(Local<String> property, 29832d7dbafe29be06cec1edd36c31fbe2865c799f4ulan@chromium.org Local<Value> value, 299d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org const PropertyCallbackInfo<void>& info); 300d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org 301d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Print(const v8::FunctionCallbackInfo<v8::Value>& args); 302d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Write(const v8::FunctionCallbackInfo<v8::Value>& args); 303d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Quit(const v8::FunctionCallbackInfo<v8::Value>& args); 304d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Version(const v8::FunctionCallbackInfo<v8::Value>& args); 305d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Read(const v8::FunctionCallbackInfo<v8::Value>& args); 306d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void ReadBuffer(const v8::FunctionCallbackInfo<v8::Value>& args); 3078e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static Handle<String> ReadFromStdin(Isolate* isolate); 308d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void ReadLine(const v8::FunctionCallbackInfo<v8::Value>& args) { 309d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org args.GetReturnValue().Set(ReadFromStdin(args.GetIsolate())); 3102efb900e7350b14be905abdeab077f3a64c583cfulan@chromium.org } 311d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Load(const v8::FunctionCallbackInfo<v8::Value>& args); 312d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void ArrayBuffer(const v8::FunctionCallbackInfo<v8::Value>& args); 313d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Int8Array(const v8::FunctionCallbackInfo<v8::Value>& args); 314d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Uint8Array(const v8::FunctionCallbackInfo<v8::Value>& args); 315d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Int16Array(const v8::FunctionCallbackInfo<v8::Value>& args); 316d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Uint16Array(const v8::FunctionCallbackInfo<v8::Value>& args); 317d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Int32Array(const v8::FunctionCallbackInfo<v8::Value>& args); 318d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Uint32Array(const v8::FunctionCallbackInfo<v8::Value>& args); 319d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Float32Array(const v8::FunctionCallbackInfo<v8::Value>& args); 320d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Float64Array(const v8::FunctionCallbackInfo<v8::Value>& args); 321d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void Uint8ClampedArray( 322d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org const v8::FunctionCallbackInfo<v8::Value>& args); 323d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void ArrayBufferSlice(const v8::FunctionCallbackInfo<v8::Value>& args); 324d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void ArraySubArray(const v8::FunctionCallbackInfo<v8::Value>& args); 325d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void ArraySet(const v8::FunctionCallbackInfo<v8::Value>& args); 32671daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // The OS object on the global object contains methods for performing 32771daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // operating system calls: 32871daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // 32971daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // os.system("program_name", ["arg1", "arg2", ...], timeout1, timeout2) will 33071daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // run the command, passing the arguments to the program. The standard output 33171daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // of the program will be picked up and returned as a multiline string. If 33241826e77311db718135ef6517b846933dfd275f3ager@chromium.org // timeout1 is present then it should be a number. -1 indicates no timeout 33341826e77311db718135ef6517b846933dfd275f3ager@chromium.org // and a positive number is used as a timeout in milliseconds that limits the 33441826e77311db718135ef6517b846933dfd275f3ager@chromium.org // time spent waiting between receiving output characters from the program. 33541826e77311db718135ef6517b846933dfd275f3ager@chromium.org // timeout2, if present, should be a number indicating the limit in 33641826e77311db718135ef6517b846933dfd275f3ager@chromium.org // milliseconds on the total running time of the program. Exceptions are 33741826e77311db718135ef6517b846933dfd275f3ager@chromium.org // thrown on timeouts or other errors or if the exit status of the program 33841826e77311db718135ef6517b846933dfd275f3ager@chromium.org // indicates an error. 33971daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // 34071daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // os.chdir(dir) changes directory to the given directory. Throws an 34171daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // exception/ on error. 34271daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // 34371daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // os.setenv(variable, value) sets an environment variable. Repeated calls to 34471daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // this method leak memory due to the API of setenv in the standard C library. 34571daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // 34671daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // os.umask(alue) calls the umask system call and returns the old umask. 34771daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // 34871daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // os.mkdirp(name, mask) creates a directory. The mask (if present) is anded 34971daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // with the current umask. Intermediate directories are created if necessary. 35071daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // An exception is not thrown if the directory already exists. Analogous to 35171daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org // the "mkdir -p" command. 352d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void OSObject(const v8::FunctionCallbackInfo<v8::Value>& args); 353d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void System(const v8::FunctionCallbackInfo<v8::Value>& args); 354d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void ChangeDirectory(const v8::FunctionCallbackInfo<v8::Value>& args); 355d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void SetEnvironment(const v8::FunctionCallbackInfo<v8::Value>& args); 356d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void UnsetEnvironment(const v8::FunctionCallbackInfo<v8::Value>& args); 357d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void SetUMask(const v8::FunctionCallbackInfo<v8::Value>& args); 358d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void MakeDirectory(const v8::FunctionCallbackInfo<v8::Value>& args); 359d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void RemoveDirectory(const v8::FunctionCallbackInfo<v8::Value>& args); 36071daaf639544be2a6638e3566f78e0b14f05cd7bager@chromium.org 361f9841897146bc10dbb3c45f0632bb79254602c75machenbach@chromium.org static void AddOSMethods(v8::Isolate* isolate, 362f9841897146bc10dbb3c45f0632bb79254602c75machenbach@chromium.org Handle<ObjectTemplate> os_template); 3632efb900e7350b14be905abdeab077f3a64c583cfulan@chromium.org 3645a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org static const char* kPrompt; 3656db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org static ShellOptions options; 3666db8871df97e7137d11f956af3c772f4f8370761sgjesse@chromium.org 3675a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org private: 3685a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org static Persistent<Context> evaluation_context_; 3697c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org#ifndef V8_SHARED 37084bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org static Persistent<Context> utility_context_; 371f5aa83707f1db5aecb22f6c3bfd5042f629d5fcfkasperl@chromium.org static CounterMap* counter_map_; 372a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org // We statically allocate a set of local counters to be used if we 373a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org // don't want to store the stats in a memory-mapped file 374a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org static CounterCollection local_counters_; 375a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org static CounterCollection* counters_; 3765de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org static base::OS::MemoryMappedFile* counters_file_; 3775de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org static base::Mutex context_mutex_; 3785de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org static const base::TimeTicks kInitialTicks; 37984bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org 380d1e3e722d649dfcccf8699a801743c9a5426b0bckasperl@chromium.org static Counter* GetCounter(const char* name, bool is_histogram); 38146a2a51ad190697e0f62c3060ce02a9de5820a07yangguo@chromium.org static void InstallUtilityScript(Isolate* isolate); 382865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org#endif // !V8_SHARED 3838e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static void Initialize(Isolate* isolate); 3848e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static void InitializeDebugger(Isolate* isolate); 3858e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static void RunShell(Isolate* isolate); 38684bcc559ac20fb04f806e97d28a314b20b58fd60svenpanne@chromium.org static bool SetOptions(int argc, char* argv[]); 3878e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static Handle<ObjectTemplate> CreateGlobalTemplate(Isolate* isolate); 388662436e7b124b3535773535c671c53db322070b5verwaest@chromium.org static Handle<FunctionTemplate> CreateArrayBufferTemplate(FunctionCallback); 389662436e7b124b3535773535c671c53db322070b5verwaest@chromium.org static Handle<FunctionTemplate> CreateArrayTemplate(FunctionCallback); 3908e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static Handle<Value> CreateExternalArrayBuffer(Isolate* isolate, 3918e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org Handle<Object> buffer, 392c74d674717b2e229addbb9349986cd157947f7edyangguo@chromium.org int32_t size); 3938e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org static Handle<Object> CreateExternalArray(Isolate* isolate, 3948e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org Handle<Object> array, 395c74d674717b2e229addbb9349986cd157947f7edyangguo@chromium.org Handle<Object> buffer, 396c74d674717b2e229addbb9349986cd157947f7edyangguo@chromium.org ExternalArrayType type, 397c74d674717b2e229addbb9349986cd157947f7edyangguo@chromium.org int32_t length, 398c74d674717b2e229addbb9349986cd157947f7edyangguo@chromium.org int32_t byteLength, 399c74d674717b2e229addbb9349986cd157947f7edyangguo@chromium.org int32_t byteOffset, 400c74d674717b2e229addbb9349986cd157947f7edyangguo@chromium.org int32_t element_size); 401d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void CreateExternalArray( 402d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org const v8::FunctionCallbackInfo<v8::Value>& args, 403d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org ExternalArrayType type, 404d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org int32_t element_size); 405d16d8531698e91e9c60a7db9e0ba3c3bb15aff20mvstanton@chromium.org static void ExternalArrayWeakCallback(Isolate* isolate, 40657ff881caeb2e15b46ac9e4dfc00e378f7c5f929ulan@chromium.org Persistent<Object>* object, 40757ff881caeb2e15b46ac9e4dfc00e378f7c5f929ulan@chromium.org uint8_t* data); 4085a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org}; 4095a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 4105a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 4115a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org} // namespace v8 4125a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 4135a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org 4145a8ca6c70c6fc9716f18f6223c98d1fef5752cf6kasperl@chromium.org#endif // V8_D8_H_ 415