Chromium Code Reviews| 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 58 // unify them later. | 58 // unify them later. |
| 59 Object* scheduled_exception_; | 59 Object* scheduled_exception_; |
| 60 bool external_caught_exception_; | 60 bool external_caught_exception_; |
| 61 v8::TryCatch* try_catch_handler_; | 61 v8::TryCatch* try_catch_handler_; |
| 62 SaveContext* save_context_; | 62 SaveContext* save_context_; |
| 63 v8::TryCatch* catcher_; | 63 v8::TryCatch* catcher_; |
| 64 | 64 |
| 65 // Stack. | 65 // Stack. |
| 66 Address c_entry_fp_; // the frame pointer of the top c entry frame | 66 Address c_entry_fp_; // the frame pointer of the top c entry frame |
| 67 Address handler_; // try-blocks are chained through the stack | 67 Address handler_; // try-blocks are chained through the stack |
| 68 #ifdef ENABLE_LOGGING_AND_PROFILING | |
| 69 Address js_entry_sp_; // the stack pointer of the bottom js entry frame | |
| 70 #endif | |
| 68 bool stack_is_cooked_; | 71 bool stack_is_cooked_; |
| 69 inline bool stack_is_cooked() { return stack_is_cooked_; } | 72 inline bool stack_is_cooked() { return stack_is_cooked_; } |
| 70 inline void set_stack_is_cooked(bool value) { stack_is_cooked_ = value; } | 73 inline void set_stack_is_cooked(bool value) { stack_is_cooked_ = value; } |
| 71 | 74 |
| 72 // Generated code scratch locations. | 75 // Generated code scratch locations. |
| 73 int32_t formal_count_; | 76 int32_t formal_count_; |
| 74 | 77 |
| 75 // Call back function to report unsafe JS accesses. | 78 // Call back function to report unsafe JS accesses. |
| 76 v8::FailedAccessCheckCallback failed_access_check_callback_; | 79 v8::FailedAccessCheckCallback failed_access_check_callback_; |
| 77 }; | 80 }; |
| 78 | 81 |
| 82 #ifdef ENABLE_LOGGING_AND_PROFILING | |
| 83 #define JS_ENTRY_SP_ADDRESS(C) C(js_entry_sp_address) | |
| 84 #else | |
| 85 #define JS_ENTRY_SP_ADDRESS(C) | |
| 86 #endif | |
| 87 | |
| 79 #define TOP_ADDRESS_LIST(C) \ | 88 #define TOP_ADDRESS_LIST(C) \ |
|
Søren Thygesen Gjesse
2009/06/02 09:00:25
How about making two lists TOP_ADDRESS_LIST_ALWAYS
Mikhail Naganov
2009/06/02 09:32:32
Good idea. Done.
| |
| 80 C(handler_address) \ | 89 C(handler_address) \ |
| 81 C(c_entry_fp_address) \ | 90 C(c_entry_fp_address) \ |
| 91 JS_ENTRY_SP_ADDRESS(C) \ | |
| 82 C(context_address) \ | 92 C(context_address) \ |
| 83 C(pending_exception_address) \ | 93 C(pending_exception_address) \ |
| 84 C(external_caught_exception_address) | 94 C(external_caught_exception_address) |
| 85 | 95 |
| 86 class Top { | 96 class Top { |
| 87 public: | 97 public: |
| 88 enum AddressId { | 98 enum AddressId { |
| 89 #define C(name) k_##name, | 99 #define C(name) k_##name, |
| 90 TOP_ADDRESS_LIST(C) | 100 TOP_ADDRESS_LIST(C) |
| 91 #undef C | 101 #undef C |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 172 static Address c_entry_fp(ThreadLocalTop* thread) { | 182 static Address c_entry_fp(ThreadLocalTop* thread) { |
| 173 return thread->c_entry_fp_; | 183 return thread->c_entry_fp_; |
| 174 } | 184 } |
| 175 static Address handler(ThreadLocalTop* thread) { return thread->handler_; } | 185 static Address handler(ThreadLocalTop* thread) { return thread->handler_; } |
| 176 | 186 |
| 177 static inline Address* c_entry_fp_address() { | 187 static inline Address* c_entry_fp_address() { |
| 178 return &thread_local_.c_entry_fp_; | 188 return &thread_local_.c_entry_fp_; |
| 179 } | 189 } |
| 180 static inline Address* handler_address() { return &thread_local_.handler_; } | 190 static inline Address* handler_address() { return &thread_local_.handler_; } |
| 181 | 191 |
| 192 #ifdef ENABLE_LOGGING_AND_PROFILING | |
| 193 // Bottom JS entry (see StackTracer::Trace in log.cc). | |
| 194 static Address js_entry_sp(ThreadLocalTop* thread) { | |
| 195 return thread->js_entry_sp_; | |
| 196 } | |
| 197 static inline Address* js_entry_sp_address() { | |
| 198 return &thread_local_.js_entry_sp_; | |
| 199 } | |
| 200 #endif | |
| 201 | |
| 182 // Generated code scratch locations. | 202 // Generated code scratch locations. |
| 183 static void* formal_count_address() { return &thread_local_.formal_count_; } | 203 static void* formal_count_address() { return &thread_local_.formal_count_; } |
| 184 | 204 |
| 185 static void MarkCompactPrologue(bool is_compacting); | 205 static void MarkCompactPrologue(bool is_compacting); |
| 186 static void MarkCompactEpilogue(bool is_compacting); | 206 static void MarkCompactEpilogue(bool is_compacting); |
| 187 static void MarkCompactPrologue(bool is_compacting, | 207 static void MarkCompactPrologue(bool is_compacting, |
| 188 char* archived_thread_data); | 208 char* archived_thread_data); |
| 189 static void MarkCompactEpilogue(bool is_compacting, | 209 static void MarkCompactEpilogue(bool is_compacting, |
| 190 char* archived_thread_data); | 210 char* archived_thread_data); |
| 191 static void PrintCurrentStackTrace(FILE* out); | 211 static void PrintCurrentStackTrace(FILE* out); |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 374 | 394 |
| 375 class ExecutionAccess BASE_EMBEDDED { | 395 class ExecutionAccess BASE_EMBEDDED { |
| 376 public: | 396 public: |
| 377 ExecutionAccess(); | 397 ExecutionAccess(); |
| 378 ~ExecutionAccess(); | 398 ~ExecutionAccess(); |
| 379 }; | 399 }; |
| 380 | 400 |
| 381 } } // namespace v8::internal | 401 } } // namespace v8::internal |
| 382 | 402 |
| 383 #endif // V8_TOP_H_ | 403 #endif // V8_TOP_H_ |
| OLD | NEW |