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

Unified Diff: samples/shell.cc

Issue 6696067: Make V8 build with the chromium shared library build (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/gyp/v8.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: samples/shell.cc
===================================================================
--- samples/shell.cc (revision 7318)
+++ samples/shell.cc (working copy)
@@ -33,7 +33,14 @@
#include <stdio.h>
#include <stdlib.h>
+// When building with V8 in a shared library we cannot use functions which
+// is not explicitly a part of the public V8 API. This extensive use of
+// #ifndef USING_V8_SHARED/#endif is a hack until we can resolve whether to
+// still use the shell sample for testing or change to use the and the
Mads Ager (chromium) 2011/03/24 10:59:03 the and the -> the
+// developer shell d8 TODO(1272).
+#ifndef USING_V8_SHARED
#include "../src/v8.h"
+#endif // USING_V8_SHARED
#if !defined(_WIN32) && !defined(_WIN64)
#include <unistd.h> // NOLINT
@@ -66,12 +73,15 @@
class SourceGroup {
public:
- SourceGroup() : argv_(NULL),
- begin_offset_(0),
- end_offset_(0),
+ SourceGroup() :
+#ifndef USING_V8_SHARED
next_semaphore_(v8::internal::OS::CreateSemaphore(0)),
done_semaphore_(v8::internal::OS::CreateSemaphore(0)),
- thread_(NULL) { }
+ thread_(NULL),
+#endif // USING_V8_SHARED
+ argv_(NULL),
+ begin_offset_(0),
+ end_offset_(0) { }
void Begin(char** argv, int offset) {
argv_ = const_cast<const char**>(argv);
@@ -111,6 +121,7 @@
}
}
+#ifndef USING_V8_SHARED
void StartExecuteInThread() {
if (thread_ == NULL) {
thread_ = new IsolateThread(this);
@@ -128,8 +139,10 @@
done_semaphore_->Wait();
}
}
+#endif // USING_V8_SHARED
private:
+#ifndef USING_V8_SHARED
static v8::internal::Thread::Options GetThreadOptions() {
v8::internal::Thread::Options options;
options.name = "IsolateThread";
@@ -173,12 +186,14 @@
isolate->Dispose();
}
+ v8::internal::Semaphore* next_semaphore_;
+ v8::internal::Semaphore* done_semaphore_;
+ v8::internal::Thread* thread_;
+#endif // USING_V8_SHARED
+
const char** argv_;
int begin_offset_;
int end_offset_;
- v8::internal::Semaphore* next_semaphore_;
- v8::internal::Semaphore* done_semaphore_;
- v8::internal::Thread* thread_;
};
@@ -199,7 +214,15 @@
bool run_shell = (argc == 1);
int num_isolates = 1;
for (int i = 1; i < argc; i++) {
- if (strcmp(argv[i], "--isolate") == 0) ++num_isolates;
+ if (strcmp(argv[i], "--isolate") == 0) {
+#ifndef USING_V8_SHARED
+ ++num_isolates;
+#else // USING_V8_SHARED
+ printf("Error: --isolate not supported when linked with shared "
+ "library\n");
+ ExitShell(1);
+#endif // USING_V8_SHARED
+ }
}
if (isolate_sources == NULL) {
isolate_sources = new SourceGroup[num_isolates];
@@ -223,14 +246,18 @@
}
current->End(argc);
}
+#ifndef USING_V8_SHARED
for (int i = 1; i < num_isolates; ++i) {
isolate_sources[i].StartExecuteInThread();
}
+#endif // USING_V8_SHARED
isolate_sources[0].Execute();
if (run_shell) RunShell(context);
+#ifndef USING_V8_SHARED
for (int i = 1; i < num_isolates; ++i) {
isolate_sources[i].WaitForThread();
}
+#endif // USING_V8_SHARED
if (last_run) {
delete[] isolate_sources;
isolate_sources = NULL;
« no previous file with comments | « no previous file | tools/gyp/v8.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698