Version 3.24.8
ARM: fix loading of global object in LWrapReceiver (Chromium issue 318420).
Fix a race between concurrent recompilation and OSR (Chromium issue 330046).
Turn off concurrent sweeping (issue 3071).
Performance and stability improvements on all platforms.
git-svn-id: http://v8.googlecode.com/svn/trunk@18423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
index ade6928..2919eb0 100644
--- a/src/arm/lithium-codegen-arm.cc
+++ b/src/arm/lithium-codegen-arm.cc
@@ -3494,7 +3494,9 @@
__ b(&result_in_receiver);
__ bind(&global_object);
- __ ldr(result, GlobalObjectOperand());
+
+ __ ldr(result, MemOperand(fp, StandardFrameConstants::kContextOffset));
+ __ ldr(result, ContextOperand(result, Context::GLOBAL_OBJECT_INDEX));
__ ldr(result,
FieldMemOperand(result, JSGlobalObject::kGlobalReceiverOffset));
if (result.is(receiver)) {
diff --git a/src/debug.cc b/src/debug.cc
index 4a7fa6b..5c04efa 100644
--- a/src/debug.cc
+++ b/src/debug.cc
@@ -2125,7 +2125,8 @@
bool prev_force_debugger_active =
isolate_->debugger()->force_debugger_active();
isolate_->debugger()->set_force_debugger_active(true);
- function->ReplaceCode(*Compiler::GetCodeForDebugging(function));
+ Handle<Code> code = Compiler::GetCodeForDebugging(function);
+ function->ReplaceCode(*code);
isolate_->debugger()->set_force_debugger_active(
prev_force_debugger_active);
}
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index 7489df7..1230801 100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -534,8 +534,8 @@
"trace progress of the incremental marking")
DEFINE_bool(track_gc_object_stats, false,
"track object counts and memory usage")
-DEFINE_bool(parallel_sweeping, false, "enable parallel sweeping")
-DEFINE_bool(concurrent_sweeping, true, "enable concurrent sweeping")
+DEFINE_bool(parallel_sweeping, true, "enable parallel sweeping")
+DEFINE_bool(concurrent_sweeping, false, "enable concurrent sweeping")
DEFINE_int(sweeper_threads, 0,
"number of parallel and concurrent sweeping threads")
#ifdef VERIFY_HEAP
diff --git a/src/objects-inl.h b/src/objects-inl.h
index 5ad0453..83d4f3d 100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -5114,6 +5114,11 @@
bool was_optimized = IsOptimized();
bool is_optimized = code->kind() == Code::OPTIMIZED_FUNCTION;
+ if (was_optimized && is_optimized) {
+ shared()->EvictFromOptimizedCodeMap(
+ this->code(), "Replacing with another optimized code");
+ }
+
set_code(code);
// Add/remove the function from the list of optimized functions for this
diff --git a/src/version.cc b/src/version.cc
index b694488..6e66d24 100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -34,7 +34,7 @@
// system so their names cannot be changed without changing the scripts.
#define MAJOR_VERSION 3
#define MINOR_VERSION 24
-#define BUILD_NUMBER 7
+#define BUILD_NUMBER 8
#define PATCH_LEVEL 0
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)