Author: [email protected]
Date: Fri Mar 27 05:32:28 2009
New Revision: 1632
Modified:
branches/bleeding_edge/src/builtins.cc
branches/bleeding_edge/src/handles.cc
branches/bleeding_edge/src/log.cc
branches/bleeding_edge/src/objects.cc
branches/bleeding_edge/src/stub-cache.cc
branches/bleeding_edge/src/top.cc
branches/bleeding_edge/test/cctest/testcfg.py
branches/bleeding_edge/tools/tickprocessor.py
Log:
Mark some of the places we leave V8 via callbacks as transitions to
state EXTERNAL rather than OTHER.
Review URL: http://codereview.chromium.org/55007
Modified: branches/bleeding_edge/src/builtins.cc
==============================================================================
--- branches/bleeding_edge/src/builtins.cc (original)
+++ branches/bleeding_edge/src/builtins.cc Fri Mar 27 05:32:28 2009
@@ -376,7 +376,7 @@
v8::Handle<v8::Value> value;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
value = callback(args);
}
if (value.IsEmpty()) {
@@ -437,7 +437,7 @@
v8::Handle<v8::Value> value;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
value = callback(args);
}
if (value.IsEmpty()) {
Modified: branches/bleeding_edge/src/handles.cc
==============================================================================
--- branches/bleeding_edge/src/handles.cc (original)
+++ branches/bleeding_edge/src/handles.cc Fri Mar 27 05:32:28 2009
@@ -430,7 +430,7 @@
LOG(ApiObjectAccess("interceptor-named-enum", *object));
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = enum_fun(info);
}
}
@@ -454,7 +454,7 @@
LOG(ApiObjectAccess("interceptor-indexed-enum", *object));
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = enum_fun(info);
}
}
Modified: branches/bleeding_edge/src/log.cc
==============================================================================
--- branches/bleeding_edge/src/log.cc (original)
+++ branches/bleeding_edge/src/log.cc Fri Mar 27 05:32:28 2009
@@ -1125,11 +1125,11 @@
if (FLAG_protect_heap && previous_ != NULL) {
if (state_ == EXTERNAL) {
// We are leaving V8.
- ASSERT(previous_ == NULL || previous_->state_ != EXTERNAL);
+ ASSERT(previous_->state_ != EXTERNAL);
Heap::Protect();
- } else {
- // Are we entering V8?
- if (previous_->state_ == EXTERNAL) Heap::Unprotect();
+ } else if (previous_->state_ == EXTERNAL) {
+ // We are entering V8.
+ Heap::Unprotect();
}
}
#endif
@@ -1149,11 +1149,12 @@
#ifdef ENABLE_HEAP_PROTECTION
if (FLAG_protect_heap && previous_ != NULL) {
if (state_ == EXTERNAL) {
- // Are we (re)entering V8?
- if (previous_->state_ != EXTERNAL) Heap::Unprotect();
- } else {
- // Are we leaving V8?
- if (previous_->state_ == EXTERNAL) Heap::Protect();
+ // We are reentering V8.
+ ASSERT(previous_->state_ != EXTERNAL);
+ Heap::Unprotect();
+ } else if (previous_->state_ == EXTERNAL) {
+ // We are leaving V8.
+ Heap::Protect();
}
}
#endif
Modified: branches/bleeding_edge/src/objects.cc
==============================================================================
--- branches/bleeding_edge/src/objects.cc (original)
+++ branches/bleeding_edge/src/objects.cc Fri Mar 27 05:32:28 2009
@@ -201,7 +201,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = call_fun(v8::Utils::ToLocal(key), info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
@@ -1423,7 +1423,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
Handle<Object> value_unhole(value->IsTheHole() ?
Heap::undefined_value() :
value);
@@ -1490,7 +1490,7 @@
v8::Utils::ToLocal(holder_handle));
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
call_fun(v8::Utils::ToLocal(key),
v8::Utils::ToLocal(value_handle),
info);
@@ -1892,7 +1892,7 @@
v8::Handle<v8::Boolean> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = query(v8::Utils::ToLocal(name_handle), info);
}
if (!result.IsEmpty()) {
@@ -1907,7 +1907,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = getter(v8::Utils::ToLocal(name_handle), info);
}
if (!result.IsEmpty()) return NONE;
@@ -2156,7 +2156,7 @@
v8::Handle<v8::Boolean> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = deleter(v8::Utils::ToLocal(name_handle), info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
@@ -2207,7 +2207,7 @@
v8::Handle<v8::Boolean> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = deleter(index, info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
@@ -5086,7 +5086,7 @@
v8::Handle<v8::Boolean> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = query(index, info);
}
if (!result.IsEmpty()) return result->IsTrue();
@@ -5097,7 +5097,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = getter(index, info);
}
if (!result.IsEmpty()) return !result->IsUndefined();
@@ -5247,7 +5247,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = setter(index, v8::Utils::ToLocal(value_handle), info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
@@ -5474,7 +5474,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = getter(index, info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
@@ -5713,7 +5713,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = getter(v8::Utils::ToLocal(name_handle), info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
Modified: branches/bleeding_edge/src/stub-cache.cc
==============================================================================
--- branches/bleeding_edge/src/stub-cache.cc (original)
+++ branches/bleeding_edge/src/stub-cache.cc Fri Mar 27 05:32:28 2009
@@ -674,7 +674,7 @@
v8::Handle<v8::Value> result;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = fun(v8::Utils::ToLocal(name), info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
@@ -699,7 +699,7 @@
v8::Utils::ToLocal(recv));
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
fun(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), info);
}
RETURN_IF_SCHEDULED_EXCEPTION();
Modified: branches/bleeding_edge/src/top.cc
==============================================================================
--- branches/bleeding_edge/src/top.cc (original)
+++ branches/bleeding_edge/src/top.cc Fri Mar 27 05:32:28 2009
@@ -516,7 +516,7 @@
bool result = false;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = callback(v8::Utils::ToLocal(receiver_handle),
v8::Utils::ToLocal(key_handle),
type,
@@ -560,7 +560,7 @@
bool result = false;
{
// Leaving JavaScript.
- VMState state(OTHER);
+ VMState state(EXTERNAL);
result = callback(v8::Utils::ToLocal(receiver_handle),
index,
type,
Modified: branches/bleeding_edge/test/cctest/testcfg.py
==============================================================================
--- branches/bleeding_edge/test/cctest/testcfg.py (original)
+++ branches/bleeding_edge/test/cctest/testcfg.py Fri Mar 27 05:32:28 2009
@@ -48,7 +48,7 @@
def GetName(self):
return self.path[-1]
-
+
def BuildCommand(self, name):
serialization_file = join('obj', 'test', self.mode, 'serdes')
serialization_file += '_' + self.GetName()
@@ -60,12 +60,12 @@
def GetCommand(self):
return self.BuildCommand(self.raw_name)
-
+
def Run(self):
if self.dependency != '':
dependent_command = self.BuildCommand(self.dependency)
output = self.RunCommand(dependent_command)
- if output.HasFailed():
+ if output.HasFailed():
return output
return test.TestCase.Run(self)
@@ -97,7 +97,7 @@
if self.Contains(path, full_path):
result.append(CcTestCase(full_path, executable, mode, raw_test,
dependency, self.context))
return result
-
+
def GetTestStatus(self, sections, defs):
status_file = join(self.root, 'cctest.status')
if exists(status_file):
Modified: branches/bleeding_edge/tools/tickprocessor.py
==============================================================================
--- branches/bleeding_edge/tools/tickprocessor.py (original)
+++ branches/bleeding_edge/tools/tickprocessor.py Fri Mar 27 05:32:28 2009
@@ -147,7 +147,7 @@
self.regions = []
-VMStates = { 'JS': 0, 'GC': 1, 'COMPILER': 2, 'OTHER': 3 }
+VMStates = { 'JS': 0, 'GC': 1, 'COMPILER': 2, 'OTHER': 3, 'EXTERNAL' : 4 }
class TickProcessor(object):
@@ -416,7 +416,13 @@
class CmdLineProcessor(object):
def __init__(self):
- self.options =
["js", "gc", "compiler", "other", "ignore-unknown", "separate-ic"]
+ self.options = ["js",
+ "gc",
+ "compiler",
+ "other",
+ "external",
+ "ignore-unknown",
+ "separate-ic"]
# default values
self.state = None
self.ignore_unknown = False
@@ -425,7 +431,7 @@
def ProcessArguments(self):
try:
- opts, args = getopt.getopt(sys.argv[1:], "jgco", self.options)
+ opts, args = getopt.getopt(sys.argv[1:], "jgcoe", self.options)
except getopt.GetoptError:
self.PrintUsageAndExit()
for key, value in opts:
@@ -437,6 +443,8 @@
self.state = VMStates['COMPILER']
if key in ("-o", "--other"):
self.state = VMStates['OTHER']
+ if key in ("-e", "--external"):
+ self.state = VMStates['EXTERNAL']
if key in ("--ignore-unknown"):
self.ignore_unknown = True
if key in ("--separate-ic"):
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---