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

Unified Diff: src/simulator-arm.cc

Issue 10634: Some fixes in ARM simulator:... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 12 years, 1 month 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
Index: src/simulator-arm.cc
===================================================================
--- src/simulator-arm.cc (revision 727)
+++ src/simulator-arm.cc (working copy)
@@ -48,11 +48,7 @@
// SScanF not beeing implemented in a platform independent was through
// ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time
// Library does not provide vsscanf.
-#ifdef WIN32
-#define SScanF sscanf_s
-#else
#define SScanF sscanf // NOLINT
-#endif
// The Debugger class is used by the simulator while debugging simulated ARM
// code.
@@ -382,19 +378,19 @@
}
-// This is the Simulator singleton. Currently only one thread is supported by
-// V8. If we had multiple threads, then we should have a Simulator instance on
-// a per thread basis.
-static Simulator* the_sim = NULL;
+// Create one simulator per thread and keep it in thread local storage.
+static v8::internal::Thread::LocalStorageKey simulator_key =
+ v8::internal::Thread::CreateThreadLocalKey();
-
-// Get the active Simulator for the current thread. See comment above about
-// using a singleton currently.
+// Get the active Simulator for the current thread.
Simulator* Simulator::current() {
- if (the_sim == NULL) {
- the_sim = new Simulator();
+ Simulator* sim = reinterpret_cast<Simulator*>(
+ v8::internal::Thread::GetThreadLocal(simulator_key));
+ if (sim == NULL) {
+ sim = new Simulator();
+ v8::internal::Thread::SetThreadLocal(simulator_key, sim);
iposva 2008/11/12 20:16:42 Since there is no AttachCurrentThread/DetachCurren
}
- return the_sim;
+ return sim;
}
@@ -1495,7 +1491,7 @@
//
-void Simulator::execute() {
+void Simulator::Execute() {
// Get the PC to simulate. Cannot use the accessor here as we need the
// raw PC value and not the one used as input to arithmetic instructions.
int program_counter = get_pc();
@@ -1527,7 +1523,7 @@
}
-Object* Simulator::call(int32_t entry, int32_t p0, int32_t p1, int32_t p2,
+Object* Simulator::Call(int32_t entry, int32_t p0, int32_t p1, int32_t p2,
int32_t p3, int32_t p4) {
// Setup parameters
set_register(r0, p0);
@@ -1570,7 +1566,7 @@
set_register(r11, callee_saved_value);
// Start the simulation
- execute();
+ Execute();
// Check that the callee-saved registers have been preserved.
CHECK_EQ(get_register(r4), callee_saved_value);
« SConstruct ('K') | « src/simulator-arm.h ('k') | tools/visual_studio/arm.vsprops » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698