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

Unified Diff: src/runtime.cc

Issue 12254007: Make the Isolate parameter mandatory for internal HandleScopes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased Created 7 years, 10 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 | « src/profile-generator.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/runtime.cc
diff --git a/src/runtime.cc b/src/runtime.cc
index bc2681bc87717e406d5d54beaadfe244e5d04c23..68b36a78f50b40637e258b708e605ff58213b438 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -3557,7 +3557,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringMatch) {
CONVERT_ARG_HANDLE_CHECKED(String, subject, 0);
CONVERT_ARG_HANDLE_CHECKED(JSRegExp, regexp, 1);
CONVERT_ARG_HANDLE_CHECKED(JSArray, regexp_info, 2);
- HandleScope handles;
+ HandleScope handles(isolate);
RegExpImpl::GlobalCache global_cache(regexp, subject, true, isolate);
if (global_cache.HasException()) return Failure::Exception();
@@ -4455,7 +4455,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StoreArrayLiteralElement) {
Handle<Object> value = args.at<Object>(2);
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 3);
CONVERT_SMI_ARG_CHECKED(literal_index, 4);
- HandleScope scope;
+ HandleScope scope(isolate);
Object* raw_boilerplate_object = literals->get(literal_index);
Handle<JSArray> boilerplate_object(JSArray::cast(raw_boilerplate_object));
@@ -6156,7 +6156,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringSplit) {
Handle<FixedArray> elements(FixedArray::cast(result->elements()));
int part_start = 0;
for (int i = 0; i < part_count; i++) {
- HandleScope local_loop_handle;
+ HandleScope local_loop_handle(isolate);
int part_end = indices.at(i);
Handle<String> substring =
isolate->factory()->NewProperSubString(subject, part_start, part_end);
@@ -7569,10 +7569,11 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewClosure) {
// into C++ code. Collect these in a newly allocated array of handles (possibly
// prefixed by a number of empty handles).
static SmartArrayPointer<Handle<Object> > GetCallerArguments(
+ Isolate* isolate,
int prefix_argc,
int* total_argc) {
// Find frame containing arguments passed to the caller.
- JavaScriptFrameIterator it;
+ JavaScriptFrameIterator it(isolate);
JavaScriptFrame* frame = it.frame();
List<JSFunction*> functions(2);
frame->GetFunctions(&functions);
@@ -7626,7 +7627,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionBindArguments) {
bound_function->shared()->set_bound(true);
// Get all arguments of calling function (Function.prototype.bind).
int argc = 0;
- SmartArrayPointer<Handle<Object> > arguments = GetCallerArguments(0, &argc);
+ SmartArrayPointer<Handle<Object> > arguments =
+ GetCallerArguments(isolate, 0, &argc);
// Don't count the this-arg.
if (argc > 0) {
ASSERT(*arguments[0] == args[2]);
@@ -7708,7 +7710,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewObjectFromBound) {
int total_argc = 0;
SmartArrayPointer<Handle<Object> > param_data =
- GetCallerArguments(bound_argc, &total_argc);
+ GetCallerArguments(isolate, bound_argc, &total_argc);
for (int i = 0; i < bound_argc; i++) {
param_data[i] = Handle<Object>(bound_args->get(
JSFunction::kBoundArgumentsStartIndex + i));
@@ -8915,17 +8917,17 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_Interrupt) {
}
-static int StackSize() {
+static int StackSize(Isolate* isolate) {
int n = 0;
- for (JavaScriptFrameIterator it; !it.done(); it.Advance()) n++;
+ for (JavaScriptFrameIterator it(isolate); !it.done(); it.Advance()) n++;
return n;
}
-static void PrintTransition(Object* result) {
+static void PrintTransition(Isolate* isolate, Object* result) {
// indentation
{ const int nmax = 80;
- int n = StackSize();
+ int n = StackSize(isolate);
if (n <= nmax)
PrintF("%4d:%*s", n, n, "");
else
@@ -8933,7 +8935,7 @@ static void PrintTransition(Object* result) {
}
if (result == NULL) {
- JavaScriptFrame::PrintTop(stdout, true, false);
+ JavaScriptFrame::PrintTop(isolate, stdout, true, false);
PrintF(" {\n");
} else {
// function result
@@ -8947,14 +8949,14 @@ static void PrintTransition(Object* result) {
RUNTIME_FUNCTION(MaybeObject*, Runtime_TraceEnter) {
ASSERT(args.length() == 0);
NoHandleAllocation ha;
- PrintTransition(NULL);
+ PrintTransition(isolate, NULL);
return isolate->heap()->undefined_value();
}
RUNTIME_FUNCTION(MaybeObject*, Runtime_TraceExit) {
NoHandleAllocation ha;
- PrintTransition(args[0]);
+ PrintTransition(isolate, args[0]);
return args[0]; // return TOS
}
@@ -9366,7 +9368,7 @@ class ArrayConcatVisitor {
current_storage->length()));
uint32_t current_length = static_cast<uint32_t>(current_storage->length());
for (uint32_t i = 0; i < current_length; i++) {
- HandleScope loop_scope;
+ HandleScope loop_scope(isolate_);
Handle<Object> element(current_storage->get(i));
if (!element->IsTheHole()) {
Handle<SeededNumberDictionary> new_storage =
@@ -9481,13 +9483,13 @@ static void IterateExternalArrayElements(Isolate* isolate,
if (elements_are_ints) {
if (elements_are_guaranteed_smis) {
for (uint32_t j = 0; j < len; j++) {
- HandleScope loop_scope;
+ HandleScope loop_scope(isolate);
Handle<Smi> e(Smi::FromInt(static_cast<int>(array->get_scalar(j))));
visitor->visit(j, e);
}
} else {
for (uint32_t j = 0; j < len; j++) {
- HandleScope loop_scope;
+ HandleScope loop_scope(isolate);
int64_t val = static_cast<int64_t>(array->get_scalar(j));
if (Smi::IsValid(static_cast<intptr_t>(val))) {
Handle<Smi> e(Smi::FromInt(static_cast<int>(val)));
@@ -9547,7 +9549,7 @@ static void CollectElementIndices(Handle<JSObject> object,
SeededNumberDictionary::cast(object->elements()));
uint32_t capacity = dict->Capacity();
for (uint32_t j = 0; j < capacity; j++) {
- HandleScope loop_scope;
+ HandleScope loop_scope(object->GetIsolate());
Handle<Object> k(dict->KeyAt(j));
if (dict->IsKey(*k)) {
ASSERT(k->IsNumber());
@@ -9710,7 +9712,7 @@ static bool IterateElements(Isolate* isolate,
int j = 0;
int n = indices.length();
while (j < n) {
- HandleScope loop_scope;
+ HandleScope loop_scope(isolate);
uint32_t index = indices[j];
Handle<Object> element = Object::GetElement(receiver, index);
RETURN_IF_EMPTY_HANDLE_VALUE(isolate, element, false);
@@ -9805,7 +9807,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ArrayConcat) {
uint32_t estimate_result_length = 0;
uint32_t estimate_nof_elements = 0;
for (int i = 0; i < argument_count; i++) {
- HandleScope loop_scope;
+ HandleScope loop_scope(isolate);
Handle<Object> obj(elements->get(i));
uint32_t length_estimate;
uint32_t element_estimate;
@@ -11688,7 +11690,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPrintScopes) {
#ifdef DEBUG
// Print the scopes for the top frame.
- StackFrameLocator locator;
+ StackFrameLocator locator(isolate);
JavaScriptFrame* frame = locator.FindJavaScriptFrame(0);
for (ScopeIterator it(isolate, frame, 0);
!it.Done();
@@ -13275,7 +13277,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_MessageGetScript) {
// Exclude the code in release mode.
RUNTIME_FUNCTION(MaybeObject*, Runtime_ListNatives) {
ASSERT(args.length() == 0);
- HandleScope scope;
+ HandleScope scope(isolate);
#define COUNT_ENTRY(Name, argc, ressize) + 1
int entry_count = 0
RUNTIME_FUNCTION_LIST(COUNT_ENTRY)
@@ -13288,7 +13290,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ListNatives) {
bool inline_runtime_functions = false;
#define ADD_ENTRY(Name, argc, ressize) \
{ \
- HandleScope inner; \
+ HandleScope inner(isolate); \
Handle<String> name; \
/* Inline runtime functions have an underscore in front of the name. */ \
if (inline_runtime_functions) { \
@@ -13324,7 +13326,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_Log) {
String::FlatContent format_content = format->GetFlatContent();
RUNTIME_ASSERT(format_content.IsAscii());
Vector<const uint8_t> chars = format_content.ToOneByteVector();
- LOGGER->LogRuntime(Vector<const char>::cast(chars), elms);
+ LOGGER->LogRuntime(isolate, Vector<const char>::cast(chars), elms);
return isolate->heap()->undefined_value();
}
« no previous file with comments | « src/profile-generator.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698