OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 3220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3231 Vector< Handle<Object> > argv = HandleVector<Object>(NULL, 0); | 3231 Vector< Handle<Object> > argv = HandleVector<Object>(NULL, 0); |
3232 Handle<Object> error = isolate->factory()->NewError(message, argv); | 3232 Handle<Object> error = isolate->factory()->NewError(message, argv); |
3233 return isolate->Throw(*error); | 3233 return isolate->Throw(*error); |
3234 } | 3234 } |
3235 | 3235 |
3236 | 3236 |
3237 RUNTIME_FUNCTION(MaybeObject*, Runtime_ObjectFreeze) { | 3237 RUNTIME_FUNCTION(MaybeObject*, Runtime_ObjectFreeze) { |
3238 HandleScope scope(isolate); | 3238 HandleScope scope(isolate); |
3239 ASSERT(args.length() == 1); | 3239 ASSERT(args.length() == 1); |
3240 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0); | 3240 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0); |
3241 Handle<Object> result = JSObject::Freeze(object); | 3241 Handle<Object> result; |
3242 RETURN_IF_EMPTY_HANDLE(isolate, result); | 3242 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, JSObject::Freeze(object)); |
3243 return *result; | 3243 return *result; |
3244 } | 3244 } |
3245 | 3245 |
3246 | 3246 |
3247 MUST_USE_RESULT static MaybeObject* CharFromCode(Isolate* isolate, | 3247 MUST_USE_RESULT static MaybeObject* CharFromCode(Isolate* isolate, |
3248 Object* char_code) { | 3248 Object* char_code) { |
3249 if (char_code->IsNumber()) { | 3249 if (char_code->IsNumber()) { |
3250 return isolate->heap()->LookupSingleCharacterStringFromCode( | 3250 return isolate->heap()->LookupSingleCharacterStringFromCode( |
3251 NumberToUint32(char_code) & 0xffff); | 3251 NumberToUint32(char_code) & 0xffff); |
3252 } | 3252 } |
(...skipping 9058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12311 } | 12311 } |
12312 return *array; | 12312 return *array; |
12313 } | 12313 } |
12314 | 12314 |
12315 | 12315 |
12316 static const int kScopeDetailsTypeIndex = 0; | 12316 static const int kScopeDetailsTypeIndex = 0; |
12317 static const int kScopeDetailsObjectIndex = 1; | 12317 static const int kScopeDetailsObjectIndex = 1; |
12318 static const int kScopeDetailsSize = 2; | 12318 static const int kScopeDetailsSize = 2; |
12319 | 12319 |
12320 | 12320 |
12321 static Handle<JSObject> MaterializeScopeDetails(Isolate* isolate, | 12321 static MaybeHandle<JSObject> MaterializeScopeDetails(Isolate* isolate, |
12322 ScopeIterator* it) { | 12322 ScopeIterator* it) { |
12323 // Calculate the size of the result. | 12323 // Calculate the size of the result. |
12324 int details_size = kScopeDetailsSize; | 12324 int details_size = kScopeDetailsSize; |
12325 Handle<FixedArray> details = isolate->factory()->NewFixedArray(details_size); | 12325 Handle<FixedArray> details = isolate->factory()->NewFixedArray(details_size); |
12326 | 12326 |
12327 // Fill in scope details. | 12327 // Fill in scope details. |
12328 details->set(kScopeDetailsTypeIndex, Smi::FromInt(it->Type())); | 12328 details->set(kScopeDetailsTypeIndex, Smi::FromInt(it->Type())); |
12329 Handle<JSObject> scope_object = it->ScopeObject(); | 12329 Handle<JSObject> scope_object; |
12330 RETURN_IF_EMPTY_HANDLE_VALUE(isolate, scope_object, Handle<JSObject>()); | 12330 ASSIGN_RETURN_ON_EXCEPTION( |
| 12331 isolate, scope_object, it->ScopeObject(), JSObject); |
12331 details->set(kScopeDetailsObjectIndex, *scope_object); | 12332 details->set(kScopeDetailsObjectIndex, *scope_object); |
12332 | 12333 |
12333 return isolate->factory()->NewJSArrayWithElements(details); | 12334 return isolate->factory()->NewJSArrayWithElements(details); |
12334 } | 12335 } |
12335 | 12336 |
12336 | 12337 |
12337 // Return an array with scope details | 12338 // Return an array with scope details |
12338 // args[0]: number: break id | 12339 // args[0]: number: break id |
12339 // args[1]: number: frame index | 12340 // args[1]: number: frame index |
12340 // args[2]: number: inlined frame index | 12341 // args[2]: number: inlined frame index |
(...skipping 23 matching lines...) Expand all Loading... |
12364 | 12365 |
12365 // Find the requested scope. | 12366 // Find the requested scope. |
12366 int n = 0; | 12367 int n = 0; |
12367 ScopeIterator it(isolate, frame, inlined_jsframe_index); | 12368 ScopeIterator it(isolate, frame, inlined_jsframe_index); |
12368 for (; !it.Done() && n < index; it.Next()) { | 12369 for (; !it.Done() && n < index; it.Next()) { |
12369 n++; | 12370 n++; |
12370 } | 12371 } |
12371 if (it.Done()) { | 12372 if (it.Done()) { |
12372 return isolate->heap()->undefined_value(); | 12373 return isolate->heap()->undefined_value(); |
12373 } | 12374 } |
12374 Handle<JSObject> details = MaterializeScopeDetails(isolate, &it); | 12375 Handle<JSObject> details; |
12375 RETURN_IF_EMPTY_HANDLE(isolate, details); | 12376 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 12377 isolate, details, MaterializeScopeDetails(isolate, &it)); |
12376 return *details; | 12378 return *details; |
12377 } | 12379 } |
12378 | 12380 |
12379 | 12381 |
12380 // Return an array of scope details | 12382 // Return an array of scope details |
12381 // args[0]: number: break id | 12383 // args[0]: number: break id |
12382 // args[1]: number: frame index | 12384 // args[1]: number: frame index |
12383 // args[2]: number: inlined frame index | 12385 // args[2]: number: inlined frame index |
12384 // args[3]: boolean: ignore nested scopes | 12386 // args[3]: boolean: ignore nested scopes |
12385 // | 12387 // |
(...skipping 20 matching lines...) Expand all Loading... |
12406 } | 12408 } |
12407 | 12409 |
12408 // Get the frame where the debugging is performed. | 12410 // Get the frame where the debugging is performed. |
12409 StackFrame::Id id = UnwrapFrameId(wrapped_id); | 12411 StackFrame::Id id = UnwrapFrameId(wrapped_id); |
12410 JavaScriptFrameIterator frame_it(isolate, id); | 12412 JavaScriptFrameIterator frame_it(isolate, id); |
12411 JavaScriptFrame* frame = frame_it.frame(); | 12413 JavaScriptFrame* frame = frame_it.frame(); |
12412 | 12414 |
12413 List<Handle<JSObject> > result(4); | 12415 List<Handle<JSObject> > result(4); |
12414 ScopeIterator it(isolate, frame, inlined_jsframe_index, ignore_nested_scopes); | 12416 ScopeIterator it(isolate, frame, inlined_jsframe_index, ignore_nested_scopes); |
12415 for (; !it.Done(); it.Next()) { | 12417 for (; !it.Done(); it.Next()) { |
12416 Handle<JSObject> details = MaterializeScopeDetails(isolate, &it); | 12418 Handle<JSObject> details; |
12417 RETURN_IF_EMPTY_HANDLE(isolate, details); | 12419 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 12420 isolate, details, MaterializeScopeDetails(isolate, &it)); |
12418 result.Add(details); | 12421 result.Add(details); |
12419 } | 12422 } |
12420 | 12423 |
12421 Handle<FixedArray> array = isolate->factory()->NewFixedArray(result.length()); | 12424 Handle<FixedArray> array = isolate->factory()->NewFixedArray(result.length()); |
12422 for (int i = 0; i < result.length(); ++i) { | 12425 for (int i = 0; i < result.length(); ++i) { |
12423 array->set(i, *result[i]); | 12426 array->set(i, *result[i]); |
12424 } | 12427 } |
12425 return *isolate->factory()->NewJSArrayWithElements(array); | 12428 return *isolate->factory()->NewJSArrayWithElements(array); |
12426 } | 12429 } |
12427 | 12430 |
(...skipping 26 matching lines...) Expand all Loading... |
12454 // Find the requested scope. | 12457 // Find the requested scope. |
12455 int n = 0; | 12458 int n = 0; |
12456 ScopeIterator it(isolate, fun); | 12459 ScopeIterator it(isolate, fun); |
12457 for (; !it.Done() && n < index; it.Next()) { | 12460 for (; !it.Done() && n < index; it.Next()) { |
12458 n++; | 12461 n++; |
12459 } | 12462 } |
12460 if (it.Done()) { | 12463 if (it.Done()) { |
12461 return isolate->heap()->undefined_value(); | 12464 return isolate->heap()->undefined_value(); |
12462 } | 12465 } |
12463 | 12466 |
12464 Handle<JSObject> details = MaterializeScopeDetails(isolate, &it); | 12467 Handle<JSObject> details; |
12465 RETURN_IF_EMPTY_HANDLE(isolate, details); | 12468 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 12469 isolate, details, MaterializeScopeDetails(isolate, &it)); |
12466 return *details; | 12470 return *details; |
12467 } | 12471 } |
12468 | 12472 |
12469 | 12473 |
12470 static bool SetScopeVariableValue(ScopeIterator* it, int index, | 12474 static bool SetScopeVariableValue(ScopeIterator* it, int index, |
12471 Handle<String> variable_name, | 12475 Handle<String> variable_name, |
12472 Handle<Object> new_value) { | 12476 Handle<Object> new_value) { |
12473 for (int n = 0; !it->Done() && n < index; it->Next()) { | 12477 for (int n = 0; !it->Done() && n < index; it->Next()) { |
12474 n++; | 12478 n++; |
12475 } | 12479 } |
(...skipping 2755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15231 } | 15235 } |
15232 } | 15236 } |
15233 | 15237 |
15234 | 15238 |
15235 void Runtime::OutOfMemory() { | 15239 void Runtime::OutOfMemory() { |
15236 Heap::FatalProcessOutOfMemory("CALL_AND_RETRY_LAST", true); | 15240 Heap::FatalProcessOutOfMemory("CALL_AND_RETRY_LAST", true); |
15237 UNREACHABLE(); | 15241 UNREACHABLE(); |
15238 } | 15242 } |
15239 | 15243 |
15240 } } // namespace v8::internal | 15244 } } // namespace v8::internal |
OLD | NEW |