Revision: 16636
Author: [email protected]
Date: Wed Sep 11 08:39:38 2013 UTC
Log: some random isolate threading
[email protected]
BUG=
Review URL: https://codereview.chromium.org/23494046
http://code.google.com/p/v8/source/detail?r=16636
Modified:
/branches/bleeding_edge/src/bootstrapper.cc
/branches/bleeding_edge/src/bootstrapper.h
/branches/bleeding_edge/src/checks.cc
/branches/bleeding_edge/src/isolate.h
/branches/bleeding_edge/src/jsregexp.cc
/branches/bleeding_edge/src/jsregexp.h
/branches/bleeding_edge/src/mark-compact.cc
/branches/bleeding_edge/src/objects.cc
=======================================
--- /branches/bleeding_edge/src/bootstrapper.cc Tue Sep 10 11:13:55 2013 UTC
+++ /branches/bleeding_edge/src/bootstrapper.cc Wed Sep 11 08:39:38 2013 UTC
@@ -98,7 +98,7 @@
void Bootstrapper::Initialize(bool create_heap_objects) {
- extensions_cache_.Initialize(create_heap_objects);
+ extensions_cache_.Initialize(isolate_, create_heap_objects);
}
@@ -147,7 +147,7 @@
delete_these_arrays_on_tear_down_ = NULL;
}
- extensions_cache_.Initialize(false); // Yes, symmetrical
+ extensions_cache_.Initialize(isolate_, false); // Yes, symmetrical
}
=======================================
--- /branches/bleeding_edge/src/bootstrapper.h Tue Sep 10 14:30:36 2013 UTC
+++ /branches/bleeding_edge/src/bootstrapper.h Wed Sep 11 08:39:38 2013 UTC
@@ -44,9 +44,8 @@
public:
explicit SourceCodeCache(Script::Type type): type_(type), cache_(NULL) {
}
- void Initialize(bool create_heap_objects) {
- cache_ = create_heap_objects ?
- Isolate::Current()->heap()->empty_fixed_array() : NULL;
+ void Initialize(Isolate* isolate, bool create_heap_objects) {
+ cache_ = create_heap_objects ? isolate->heap()->empty_fixed_array() :
NULL;
}
void Iterate(ObjectVisitor* v) {
=======================================
--- /branches/bleeding_edge/src/checks.cc Mon Jun 3 15:32:22 2013 UTC
+++ /branches/bleeding_edge/src/checks.cc Wed Sep 11 08:39:38 2013 UTC
@@ -31,33 +31,19 @@
#include "platform.h"
-// TODO(isolates): is it necessary to lift this?
-static int fatal_error_handler_nesting_depth = 0;
-
// Contains protection against recursive calls (faults while handling
faults).
extern "C" void V8_Fatal(const char* file, int line, const char*
format, ...) {
i::AllowHandleDereference allow_deref;
i::AllowDeferredHandleDereference allow_deferred_deref;
fflush(stdout);
fflush(stderr);
- fatal_error_handler_nesting_depth++;
- // First time we try to print an error message
- if (fatal_error_handler_nesting_depth < 2) {
- i::OS::PrintError("\n\n#\n# Fatal error in %s, line %d\n# ", file,
line);
- va_list arguments;
- va_start(arguments, format);
- i::OS::VPrintError(format, arguments);
- va_end(arguments);
- i::OS::PrintError("\n#\n");
- i::OS::DumpBacktrace();
- }
- // First two times we may try to print a stack dump.
- if (fatal_error_handler_nesting_depth < 3) {
- if (i::FLAG_stack_trace_on_abort) {
- // Call this one twice on double fault
- i::Isolate::Current()->PrintStack(stderr);
- }
- }
+ i::OS::PrintError("\n\n#\n# Fatal error in %s, line %d\n# ", file, line);
+ va_list arguments;
+ va_start(arguments, format);
+ i::OS::VPrintError(format, arguments);
+ va_end(arguments);
+ i::OS::PrintError("\n#\n");
+ i::OS::DumpBacktrace();
i::OS::Abort();
}
=======================================
--- /branches/bleeding_edge/src/isolate.h Wed Sep 11 07:28:47 2013 UTC
+++ /branches/bleeding_edge/src/isolate.h Wed Sep 11 08:39:38 2013 UTC
@@ -1426,12 +1426,15 @@
class AssertNoContextChange BASE_EMBEDDED {
#ifdef DEBUG
public:
- AssertNoContextChange() : context_(Isolate::Current()->context()) { }
+ AssertNoContextChange()
+ : isolate_(Isolate::Current()),
+ context_(isolate_->context()) { }
~AssertNoContextChange() {
- ASSERT(Isolate::Current()->context() == *context_);
+ ASSERT(isolate_->context() == *context_);
}
private:
+ Isolate* isolate_;
Handle<Context> context_;
#else
public:
@@ -1445,15 +1448,17 @@
#ifdef DEBUG
public:
AssertNoContextChangeWithHandleScope() :
- scope_(Isolate::Current()),
- context_(Isolate::Current()->context(), Isolate::Current()) {
+ isolate_(Isolate::Current()),
+ scope_(isolate_),
+ context_(isolate_->context(), isolate_) {
}
~AssertNoContextChangeWithHandleScope() {
- ASSERT(Isolate::Current()->context() == *context_);
+ ASSERT(isolate_->context() == *context_);
}
private:
+ Isolate* isolate_;
HandleScope scope_;
Handle<Context> context_;
#else
=======================================
--- /branches/bleeding_edge/src/jsregexp.cc Wed Sep 11 07:28:47 2013 UTC
+++ /branches/bleeding_edge/src/jsregexp.cc Wed Sep 11 08:39:38 2013 UTC
@@ -1085,8 +1085,8 @@
};
-static RegExpEngine::CompilationResult IrregexpRegExpTooBig() {
- return RegExpEngine::CompilationResult("RegExp too big");
+static RegExpEngine::CompilationResult IrregexpRegExpTooBig(Isolate*
isolate) {
+ return RegExpEngine::CompilationResult(isolate, "RegExp too big");
}
@@ -1143,7 +1143,7 @@
while (!work_list.is_empty()) {
work_list.RemoveLast()->Emit(this, &new_trace);
}
- if (reg_exp_too_big_) return IrregexpRegExpTooBig();
+ if (reg_exp_too_big_) return IrregexpRegExpTooBig(zone_->isolate());
Handle<HeapObject> code = macro_assembler_->GetCode(pattern);
heap->IncreaseTotalRegexpCodeGenerated(code->Size());
@@ -5999,7 +5999,7 @@
bool is_ascii,
Zone* zone) {
if ((data->capture_count + 1) * 2 - 1 >
RegExpMacroAssembler::kMaxRegister) {
- return IrregexpRegExpTooBig();
+ return IrregexpRegExpTooBig(zone->isolate());
}
RegExpCompiler compiler(data->capture_count, ignore_case, is_ascii,
zone);
@@ -6063,7 +6063,7 @@
analysis.EnsureAnalyzed(node);
if (analysis.has_failed()) {
const char* error_message = analysis.error_message();
- return CompilationResult(error_message);
+ return CompilationResult(zone->isolate(), error_message);
}
// Create the correct assembler for the architecture.
=======================================
--- /branches/bleeding_edge/src/jsregexp.h Tue Sep 10 14:30:36 2013 UTC
+++ /branches/bleeding_edge/src/jsregexp.h Wed Sep 11 08:39:38 2013 UTC
@@ -1615,9 +1615,9 @@
class RegExpEngine: public AllStatic {
public:
struct CompilationResult {
- explicit CompilationResult(const char* error_message)
+ CompilationResult(Isolate* isolate, const char* error_message)
: error_message(error_message),
- code(Isolate::Current()->heap()->the_hole_value()),
+ code(isolate->heap()->the_hole_value()),
num_registers(0) {}
CompilationResult(Object* code, int registers)
: error_message(NULL),
=======================================
--- /branches/bleeding_edge/src/mark-compact.cc Wed Sep 11 07:14:41 2013 UTC
+++ /branches/bleeding_edge/src/mark-compact.cc Wed Sep 11 08:39:38 2013 UTC
@@ -1788,8 +1788,6 @@
void MarkCompactCollector::PrepareForCodeFlushing() {
- ASSERT(heap() == Isolate::Current()->heap());
-
// Enable code flushing for non-incremental cycles.
if (FLAG_flush_code && !FLAG_flush_code_incrementally) {
EnableCodeFlushing(!was_marked_incrementally_);
=======================================
--- /branches/bleeding_edge/src/objects.cc Wed Sep 11 07:14:41 2013 UTC
+++ /branches/bleeding_edge/src/objects.cc Wed Sep 11 08:39:38 2013 UTC
@@ -9892,7 +9892,7 @@
if (code()->kind() == Code::FUNCTION) {
code()->set_optimizable(false);
}
- PROFILE(Isolate::Current(),
+ PROFILE(GetIsolate(),
LogExistingFunction(Handle<SharedFunctionInfo>(this),
Handle<Code>(code())));
if (FLAG_trace_opt) {
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.