OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 4949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4960 CONVERT_NUMBER_CHECKED(uint32_t, index, Uint32, args[1]); | 4960 CONVERT_NUMBER_CHECKED(uint32_t, index, Uint32, args[1]); |
4961 | 4961 |
4962 return obj->GetElementWithInterceptor(*obj, index); | 4962 return obj->GetElementWithInterceptor(*obj, index); |
4963 } | 4963 } |
4964 | 4964 |
4965 | 4965 |
4966 static Object* Runtime_CheckExecutionState(Arguments args) { | 4966 static Object* Runtime_CheckExecutionState(Arguments args) { |
4967 ASSERT(args.length() >= 1); | 4967 ASSERT(args.length() >= 1); |
4968 CONVERT_NUMBER_CHECKED(int, break_id, Int32, args[0]); | 4968 CONVERT_NUMBER_CHECKED(int, break_id, Int32, args[0]); |
4969 // Check that the break id is valid. | 4969 // Check that the break id is valid. |
4970 if (Top::break_id() == 0 || break_id != Top::break_id()) { | 4970 if (Debug::break_id() == 0 || break_id != Debug::break_id()) { |
4971 return Top::Throw(Heap::illegal_execution_state_symbol()); | 4971 return Top::Throw(Heap::illegal_execution_state_symbol()); |
4972 } | 4972 } |
4973 | 4973 |
4974 return Heap::true_value(); | 4974 return Heap::true_value(); |
4975 } | 4975 } |
4976 | 4976 |
4977 | 4977 |
4978 static Object* Runtime_GetFrameCount(Arguments args) { | 4978 static Object* Runtime_GetFrameCount(Arguments args) { |
4979 HandleScope scope; | 4979 HandleScope scope; |
4980 ASSERT(args.length() == 1); | 4980 ASSERT(args.length() == 1); |
4981 | 4981 |
4982 // Check arguments. | 4982 // Check arguments. |
4983 Object* result = Runtime_CheckExecutionState(args); | 4983 Object* result = Runtime_CheckExecutionState(args); |
4984 if (result->IsFailure()) return result; | 4984 if (result->IsFailure()) return result; |
4985 | 4985 |
4986 // Count all frames which are relevant to debugging stack trace. | 4986 // Count all frames which are relevant to debugging stack trace. |
4987 int n = 0; | 4987 int n = 0; |
4988 StackFrame::Id id = Top::break_frame_id(); | 4988 StackFrame::Id id = Debug::break_frame_id(); |
4989 if (id == StackFrame::NO_ID) { | 4989 if (id == StackFrame::NO_ID) { |
4990 // If there is no JavaScript stack frame count is 0. | 4990 // If there is no JavaScript stack frame count is 0. |
4991 return Smi::FromInt(0); | 4991 return Smi::FromInt(0); |
4992 } | 4992 } |
4993 for (JavaScriptFrameIterator it(id); !it.done(); it.Advance()) n++; | 4993 for (JavaScriptFrameIterator it(id); !it.done(); it.Advance()) n++; |
4994 return Smi::FromInt(n); | 4994 return Smi::FromInt(n); |
4995 } | 4995 } |
4996 | 4996 |
4997 | 4997 |
4998 static const int kFrameDetailsFrameIdIndex = 0; | 4998 static const int kFrameDetailsFrameIdIndex = 0; |
(...skipping 24 matching lines...) Expand all Loading... |
5023 static Object* Runtime_GetFrameDetails(Arguments args) { | 5023 static Object* Runtime_GetFrameDetails(Arguments args) { |
5024 HandleScope scope; | 5024 HandleScope scope; |
5025 ASSERT(args.length() == 2); | 5025 ASSERT(args.length() == 2); |
5026 | 5026 |
5027 // Check arguments. | 5027 // Check arguments. |
5028 Object* check = Runtime_CheckExecutionState(args); | 5028 Object* check = Runtime_CheckExecutionState(args); |
5029 if (check->IsFailure()) return check; | 5029 if (check->IsFailure()) return check; |
5030 CONVERT_NUMBER_CHECKED(int, index, Int32, args[1]); | 5030 CONVERT_NUMBER_CHECKED(int, index, Int32, args[1]); |
5031 | 5031 |
5032 // Find the relevant frame with the requested index. | 5032 // Find the relevant frame with the requested index. |
5033 StackFrame::Id id = Top::break_frame_id(); | 5033 StackFrame::Id id = Debug::break_frame_id(); |
5034 if (id == StackFrame::NO_ID) { | 5034 if (id == StackFrame::NO_ID) { |
5035 // If there are no JavaScript stack frames return undefined. | 5035 // If there are no JavaScript stack frames return undefined. |
5036 return Heap::undefined_value(); | 5036 return Heap::undefined_value(); |
5037 } | 5037 } |
5038 int count = 0; | 5038 int count = 0; |
5039 JavaScriptFrameIterator it(id); | 5039 JavaScriptFrameIterator it(id); |
5040 for (; !it.done(); it.Advance()) { | 5040 for (; !it.done(); it.Advance()) { |
5041 if (count == index) break; | 5041 if (count == index) break; |
5042 count++; | 5042 count++; |
5043 } | 5043 } |
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6136 } else { | 6136 } else { |
6137 // Handle last resort GC and make sure to allow future allocations | 6137 // Handle last resort GC and make sure to allow future allocations |
6138 // to grow the heap without causing GCs (if possible). | 6138 // to grow the heap without causing GCs (if possible). |
6139 Counters::gc_last_resort_from_js.Increment(); | 6139 Counters::gc_last_resort_from_js.Increment(); |
6140 Heap::CollectAllGarbage(); | 6140 Heap::CollectAllGarbage(); |
6141 } | 6141 } |
6142 } | 6142 } |
6143 | 6143 |
6144 | 6144 |
6145 } } // namespace v8::internal | 6145 } } // namespace v8::internal |
OLD | NEW |