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

Side by Side Diff: src/d8.h

Issue 2342563002: [d8] Fix the shared-library build (Closed)
Patch Set: Mark as extern in .cc Created 4 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 | « src/basic-block-profiler.h ('k') | src/d8.cc » ('j') | no next file with comments »
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 #ifndef V8_D8_H_ 5 #ifndef V8_D8_H_
6 #define V8_D8_H_ 6 #define V8_D8_H_
7 7
8 #ifndef V8_SHARED
9 #include "src/allocation.h" 8 #include "src/allocation.h"
10 #include "src/base/hashmap.h" 9 #include "src/base/hashmap.h"
11 #include "src/base/platform/time.h" 10 #include "src/base/platform/time.h"
12 #include "src/list.h" 11 #include "src/list.h"
13 #else
14 #include "include/v8.h"
15 #include "src/base/compiler-specific.h"
16 #endif // !V8_SHARED
17 12
18 #include "src/base/once.h" 13 #include "src/base/once.h"
19 14
20 15
21 namespace v8 { 16 namespace v8 {
22 17
23 18
24 #ifndef V8_SHARED
25 // A single counter in a counter collection. 19 // A single counter in a counter collection.
26 class Counter { 20 class Counter {
27 public: 21 public:
28 static const int kMaxNameSize = 64; 22 static const int kMaxNameSize = 64;
29 int32_t* Bind(const char* name, bool histogram); 23 int32_t* Bind(const char* name, bool histogram);
30 int32_t* ptr() { return &count_; } 24 int32_t* ptr() { return &count_; }
31 int32_t count() { return count_; } 25 int32_t count() { return count_; }
32 int32_t sample_total() { return sample_total_; } 26 int32_t sample_total() { return sample_total_; }
33 bool is_histogram() { return is_histogram_; } 27 bool is_histogram() { return is_histogram_; }
34 void AddSample(int32_t sample); 28 void AddSample(int32_t sample);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 private: 77 private:
84 base::HashMap* map_; 78 base::HashMap* map_;
85 base::HashMap::Entry* entry_; 79 base::HashMap::Entry* entry_;
86 }; 80 };
87 81
88 private: 82 private:
89 static int Hash(const char* name); 83 static int Hash(const char* name);
90 static bool Match(void* key1, void* key2); 84 static bool Match(void* key1, void* key2);
91 base::HashMap hash_map_; 85 base::HashMap hash_map_;
92 }; 86 };
93 #endif // !V8_SHARED
94 87
95 88
96 class SourceGroup { 89 class SourceGroup {
97 public: 90 public:
98 SourceGroup() : 91 SourceGroup() :
99 #ifndef V8_SHARED
100 next_semaphore_(0), 92 next_semaphore_(0),
101 done_semaphore_(0), 93 done_semaphore_(0),
102 thread_(NULL), 94 thread_(NULL),
103 #endif // !V8_SHARED
104 argv_(NULL), 95 argv_(NULL),
105 begin_offset_(0), 96 begin_offset_(0),
106 end_offset_(0) {} 97 end_offset_(0) {}
107 98
108 ~SourceGroup(); 99 ~SourceGroup();
109 100
110 void Begin(char** argv, int offset) { 101 void Begin(char** argv, int offset) {
111 argv_ = const_cast<const char**>(argv); 102 argv_ = const_cast<const char**>(argv);
112 begin_offset_ = offset; 103 begin_offset_ = offset;
113 } 104 }
114 105
115 void End(int offset) { end_offset_ = offset; } 106 void End(int offset) { end_offset_ = offset; }
116 107
117 void Execute(Isolate* isolate); 108 void Execute(Isolate* isolate);
118 109
119 #ifndef V8_SHARED
120 void StartExecuteInThread(); 110 void StartExecuteInThread();
121 void WaitForThread(); 111 void WaitForThread();
122 void JoinThread(); 112 void JoinThread();
123 113
124 private: 114 private:
125 class IsolateThread : public base::Thread { 115 class IsolateThread : public base::Thread {
126 public: 116 public:
127 explicit IsolateThread(SourceGroup* group) 117 explicit IsolateThread(SourceGroup* group)
128 : base::Thread(GetThreadOptions()), group_(group) {} 118 : base::Thread(GetThreadOptions()), group_(group) {}
129 119
130 virtual void Run() { 120 virtual void Run() {
131 group_->ExecuteInThread(); 121 group_->ExecuteInThread();
132 } 122 }
133 123
134 private: 124 private:
135 SourceGroup* group_; 125 SourceGroup* group_;
136 }; 126 };
137 127
138 static base::Thread::Options GetThreadOptions(); 128 static base::Thread::Options GetThreadOptions();
139 void ExecuteInThread(); 129 void ExecuteInThread();
140 130
141 base::Semaphore next_semaphore_; 131 base::Semaphore next_semaphore_;
142 base::Semaphore done_semaphore_; 132 base::Semaphore done_semaphore_;
143 base::Thread* thread_; 133 base::Thread* thread_;
144 #endif // !V8_SHARED
145 134
146 void ExitShell(int exit_code); 135 void ExitShell(int exit_code);
147 Local<String> ReadFile(Isolate* isolate, const char* name); 136 Local<String> ReadFile(Isolate* isolate, const char* name);
148 137
149 const char** argv_; 138 const char** argv_;
150 int begin_offset_; 139 int begin_offset_;
151 int end_offset_; 140 int end_offset_;
152 }; 141 };
153 142
154 #ifndef V8_SHARED
155 enum SerializationTag { 143 enum SerializationTag {
156 kSerializationTagUndefined, 144 kSerializationTagUndefined,
157 kSerializationTagNull, 145 kSerializationTagNull,
158 kSerializationTagTrue, 146 kSerializationTagTrue,
159 kSerializationTagFalse, 147 kSerializationTagFalse,
160 kSerializationTagNumber, 148 kSerializationTagNumber,
161 kSerializationTagString, 149 kSerializationTagString,
162 kSerializationTagArray, 150 kSerializationTagArray,
163 kSerializationTagObject, 151 kSerializationTagObject,
164 kSerializationTagArrayBuffer, 152 kSerializationTagArrayBuffer,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 static void PostMessageOut(const v8::FunctionCallbackInfo<v8::Value>& args); 248 static void PostMessageOut(const v8::FunctionCallbackInfo<v8::Value>& args);
261 249
262 base::Semaphore in_semaphore_; 250 base::Semaphore in_semaphore_;
263 base::Semaphore out_semaphore_; 251 base::Semaphore out_semaphore_;
264 SerializationDataQueue in_queue_; 252 SerializationDataQueue in_queue_;
265 SerializationDataQueue out_queue_; 253 SerializationDataQueue out_queue_;
266 base::Thread* thread_; 254 base::Thread* thread_;
267 char* script_; 255 char* script_;
268 base::Atomic32 running_; 256 base::Atomic32 running_;
269 }; 257 };
270 #endif // !V8_SHARED
271 258
272 259
273 class ShellOptions { 260 class ShellOptions {
274 public: 261 public:
275 ShellOptions() 262 ShellOptions()
276 : script_executed(false), 263 : script_executed(false),
277 send_idle_notification(false), 264 send_idle_notification(false),
278 invoke_weak_callbacks(false), 265 invoke_weak_callbacks(false),
279 omit_quit(false), 266 omit_quit(false),
280 stress_opt(false), 267 stress_opt(false),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 int num_isolates; 304 int num_isolates;
318 v8::ScriptCompiler::CompileOptions compile_options; 305 v8::ScriptCompiler::CompileOptions compile_options;
319 SourceGroup* isolate_sources; 306 SourceGroup* isolate_sources;
320 const char* icu_data_file; 307 const char* icu_data_file;
321 const char* natives_blob; 308 const char* natives_blob;
322 const char* snapshot_blob; 309 const char* snapshot_blob;
323 bool trace_enabled; 310 bool trace_enabled;
324 const char* trace_config; 311 const char* trace_config;
325 }; 312 };
326 313
327 #ifdef V8_SHARED
328 class Shell {
329 #else
330 class Shell : public i::AllStatic { 314 class Shell : public i::AllStatic {
331 #endif // V8_SHARED
332
333 public: 315 public:
334 enum SourceType { SCRIPT, MODULE }; 316 enum SourceType { SCRIPT, MODULE };
335 317
336 static MaybeLocal<Script> CompileString( 318 static MaybeLocal<Script> CompileString(
337 Isolate* isolate, Local<String> source, Local<Value> name, 319 Isolate* isolate, Local<String> source, Local<Value> name,
338 v8::ScriptCompiler::CompileOptions compile_options); 320 v8::ScriptCompiler::CompileOptions compile_options);
339 static bool ExecuteString(Isolate* isolate, Local<String> source, 321 static bool ExecuteString(Isolate* isolate, Local<String> source,
340 Local<Value> name, bool print_result, 322 Local<Value> name, bool print_result,
341 bool report_exceptions, 323 bool report_exceptions,
342 SourceType source_type = SCRIPT); 324 SourceType source_type = SCRIPT);
343 static const char* ToCString(const v8::String::Utf8Value& value); 325 static const char* ToCString(const v8::String::Utf8Value& value);
344 static void ReportException(Isolate* isolate, TryCatch* try_catch); 326 static void ReportException(Isolate* isolate, TryCatch* try_catch);
345 static Local<String> ReadFile(Isolate* isolate, const char* name); 327 static Local<String> ReadFile(Isolate* isolate, const char* name);
346 static Local<Context> CreateEvaluationContext(Isolate* isolate); 328 static Local<Context> CreateEvaluationContext(Isolate* isolate);
347 static int RunMain(Isolate* isolate, int argc, char* argv[], bool last_run); 329 static int RunMain(Isolate* isolate, int argc, char* argv[], bool last_run);
348 static int Main(int argc, char* argv[]); 330 static int Main(int argc, char* argv[]);
349 static void Exit(int exit_code); 331 static void Exit(int exit_code);
350 static void OnExit(Isolate* isolate); 332 static void OnExit(Isolate* isolate);
351 static void CollectGarbage(Isolate* isolate); 333 static void CollectGarbage(Isolate* isolate);
352 static void EmptyMessageQueues(Isolate* isolate); 334 static void EmptyMessageQueues(Isolate* isolate);
353 335
354 #ifndef V8_SHARED
355 // TODO(binji): stupid implementation for now. Is there an easy way to hash an 336 // TODO(binji): stupid implementation for now. Is there an easy way to hash an
356 // object for use in base::HashMap? By pointer? 337 // object for use in base::HashMap? By pointer?
357 typedef i::List<Local<Object>> ObjectList; 338 typedef i::List<Local<Object>> ObjectList;
358 static bool SerializeValue(Isolate* isolate, Local<Value> value, 339 static bool SerializeValue(Isolate* isolate, Local<Value> value,
359 const ObjectList& to_transfer, 340 const ObjectList& to_transfer,
360 ObjectList* seen_objects, 341 ObjectList* seen_objects,
361 SerializationData* out_data); 342 SerializationData* out_data);
362 static MaybeLocal<Value> DeserializeValue(Isolate* isolate, 343 static MaybeLocal<Value> DeserializeValue(Isolate* isolate,
363 const SerializationData& data, 344 const SerializationData& data,
364 int* offset); 345 int* offset);
365 static void CleanupWorkers(); 346 static void CleanupWorkers();
366 static int* LookupCounter(const char* name); 347 static int* LookupCounter(const char* name);
367 static void* CreateHistogram(const char* name, 348 static void* CreateHistogram(const char* name,
368 int min, 349 int min,
369 int max, 350 int max,
370 size_t buckets); 351 size_t buckets);
371 static void AddHistogramSample(void* histogram, int sample); 352 static void AddHistogramSample(void* histogram, int sample);
372 static void MapCounters(v8::Isolate* isolate, const char* name); 353 static void MapCounters(v8::Isolate* isolate, const char* name);
373 354
374 static void PerformanceNow(const v8::FunctionCallbackInfo<v8::Value>& args); 355 static void PerformanceNow(const v8::FunctionCallbackInfo<v8::Value>& args);
375 #endif // !V8_SHARED
376 356
377 static void RealmCurrent(const v8::FunctionCallbackInfo<v8::Value>& args); 357 static void RealmCurrent(const v8::FunctionCallbackInfo<v8::Value>& args);
378 static void RealmOwner(const v8::FunctionCallbackInfo<v8::Value>& args); 358 static void RealmOwner(const v8::FunctionCallbackInfo<v8::Value>& args);
379 static void RealmGlobal(const v8::FunctionCallbackInfo<v8::Value>& args); 359 static void RealmGlobal(const v8::FunctionCallbackInfo<v8::Value>& args);
380 static void RealmCreate(const v8::FunctionCallbackInfo<v8::Value>& args); 360 static void RealmCreate(const v8::FunctionCallbackInfo<v8::Value>& args);
381 static void RealmCreateAllowCrossRealmAccess( 361 static void RealmCreateAllowCrossRealmAccess(
382 const v8::FunctionCallbackInfo<v8::Value>& args); 362 const v8::FunctionCallbackInfo<v8::Value>& args);
383 static void RealmDispose(const v8::FunctionCallbackInfo<v8::Value>& args); 363 static void RealmDispose(const v8::FunctionCallbackInfo<v8::Value>& args);
384 static void RealmSwitch(const v8::FunctionCallbackInfo<v8::Value>& args); 364 static void RealmSwitch(const v8::FunctionCallbackInfo<v8::Value>& args);
385 static void RealmEval(const v8::FunctionCallbackInfo<v8::Value>& args); 365 static void RealmEval(const v8::FunctionCallbackInfo<v8::Value>& args);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 static void AddOSMethods(v8::Isolate* isolate, 423 static void AddOSMethods(v8::Isolate* isolate,
444 Local<ObjectTemplate> os_template); 424 Local<ObjectTemplate> os_template);
445 425
446 static const char* kPrompt; 426 static const char* kPrompt;
447 static ShellOptions options; 427 static ShellOptions options;
448 static ArrayBuffer::Allocator* array_buffer_allocator; 428 static ArrayBuffer::Allocator* array_buffer_allocator;
449 429
450 private: 430 private:
451 static Global<Context> evaluation_context_; 431 static Global<Context> evaluation_context_;
452 static base::OnceType quit_once_; 432 static base::OnceType quit_once_;
453 #ifndef V8_SHARED
454 static Global<Function> stringify_function_; 433 static Global<Function> stringify_function_;
455 static CounterMap* counter_map_; 434 static CounterMap* counter_map_;
456 // We statically allocate a set of local counters to be used if we 435 // We statically allocate a set of local counters to be used if we
457 // don't want to store the stats in a memory-mapped file 436 // don't want to store the stats in a memory-mapped file
458 static CounterCollection local_counters_; 437 static CounterCollection local_counters_;
459 static CounterCollection* counters_; 438 static CounterCollection* counters_;
460 static base::OS::MemoryMappedFile* counters_file_; 439 static base::OS::MemoryMappedFile* counters_file_;
461 static base::LazyMutex context_mutex_; 440 static base::LazyMutex context_mutex_;
462 static const base::TimeTicks kInitialTicks; 441 static const base::TimeTicks kInitialTicks;
463 442
464 static base::LazyMutex workers_mutex_; 443 static base::LazyMutex workers_mutex_;
465 static bool allow_new_workers_; 444 static bool allow_new_workers_;
466 static i::List<Worker*> workers_; 445 static i::List<Worker*> workers_;
467 static i::List<SharedArrayBuffer::Contents> externalized_shared_contents_; 446 static i::List<SharedArrayBuffer::Contents> externalized_shared_contents_;
468 447
469 static void WriteIgnitionDispatchCountersFile(v8::Isolate* isolate); 448 static void WriteIgnitionDispatchCountersFile(v8::Isolate* isolate);
470 static Counter* GetCounter(const char* name, bool is_histogram); 449 static Counter* GetCounter(const char* name, bool is_histogram);
471 static Local<String> Stringify(Isolate* isolate, Local<Value> value); 450 static Local<String> Stringify(Isolate* isolate, Local<Value> value);
472 #endif // !V8_SHARED
473 static void Initialize(Isolate* isolate); 451 static void Initialize(Isolate* isolate);
474 static void RunShell(Isolate* isolate); 452 static void RunShell(Isolate* isolate);
475 static bool SetOptions(int argc, char* argv[]); 453 static bool SetOptions(int argc, char* argv[]);
476 static Local<ObjectTemplate> CreateGlobalTemplate(Isolate* isolate); 454 static Local<ObjectTemplate> CreateGlobalTemplate(Isolate* isolate);
477 static MaybeLocal<Context> CreateRealm( 455 static MaybeLocal<Context> CreateRealm(
478 const v8::FunctionCallbackInfo<v8::Value>& args); 456 const v8::FunctionCallbackInfo<v8::Value>& args);
479 }; 457 };
480 458
481 459
482 } // namespace v8 460 } // namespace v8
483 461
484 462
485 #endif // V8_D8_H_ 463 #endif // V8_D8_H_
OLDNEW
« no previous file with comments | « src/basic-block-profiler.h ('k') | src/d8.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698