| OLD | NEW | 
|     1 // Copyright 2011 the V8 project authors. All rights reserved. |     1 // Copyright 2011 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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    78   ScopedVector<char> data(s->Length() + 1); |    78   ScopedVector<char> data(s->Length() + 1); | 
|    79   if (data.start() == NULL) { |    79   if (data.start() == NULL) { | 
|    80     V8::FatalProcessOutOfMemory("PrintLn"); |    80     V8::FatalProcessOutOfMemory("PrintLn"); | 
|    81     return; |    81     return; | 
|    82   } |    82   } | 
|    83   s->WriteAscii(data.start()); |    83   s->WriteAscii(data.start()); | 
|    84   PrintF("%s\n", data.start()); |    84   PrintF("%s\n", data.start()); | 
|    85 } |    85 } | 
|    86  |    86  | 
|    87  |    87  | 
|    88 static Handle<Code> ComputeCallDebugBreak(int argc, Code::Kind kind) { |  | 
|    89   Isolate* isolate = Isolate::Current(); |  | 
|    90   return isolate->stub_cache()->ComputeCallDebugBreak(argc, kind); |  | 
|    91 } |  | 
|    92  |  | 
|    93  |  | 
|    94 static Handle<Code> ComputeCallDebugPrepareStepIn(int argc, Code::Kind kind) { |    88 static Handle<Code> ComputeCallDebugPrepareStepIn(int argc, Code::Kind kind) { | 
|    95   Isolate* isolate = Isolate::Current(); |    89   Isolate* isolate = Isolate::Current(); | 
|    96   return isolate->stub_cache()->ComputeCallDebugPrepareStepIn(argc, kind); |    90   return isolate->stub_cache()->ComputeCallDebugPrepareStepIn(argc, kind); | 
|    97 } |    91 } | 
|    98  |    92  | 
|    99  |    93  | 
|   100 static v8::Handle<v8::Context> GetDebugEventContext(Isolate* isolate) { |    94 static v8::Handle<v8::Context> GetDebugEventContext(Isolate* isolate) { | 
|   101   Handle<Context> context = isolate->debug()->debugger_entry()->GetContext(); |    95   Handle<Context> context = isolate->debug()->debugger_entry()->GetContext(); | 
|   102   // Isolate::context() may have been NULL when "script collected" event |    96   // Isolate::context() may have been NULL when "script collected" event | 
|   103   // occured. |    97   // occured. | 
| (...skipping 1427 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1531 // Check whether a code stub with the specified major key is a possible break |  1525 // Check whether a code stub with the specified major key is a possible break | 
|  1532 // location. |  1526 // location. | 
|  1533 bool Debug::IsBreakStub(Code* code) { |  1527 bool Debug::IsBreakStub(Code* code) { | 
|  1534   CodeStub::Major major_key = CodeStub::GetMajorKey(code); |  1528   CodeStub::Major major_key = CodeStub::GetMajorKey(code); | 
|  1535   return major_key == CodeStub::CallFunction; |  1529   return major_key == CodeStub::CallFunction; | 
|  1536 } |  1530 } | 
|  1537  |  1531  | 
|  1538  |  1532  | 
|  1539 // Find the builtin to use for invoking the debug break |  1533 // Find the builtin to use for invoking the debug break | 
|  1540 Handle<Code> Debug::FindDebugBreak(Handle<Code> code, RelocInfo::Mode mode) { |  1534 Handle<Code> Debug::FindDebugBreak(Handle<Code> code, RelocInfo::Mode mode) { | 
 |  1535   Isolate* isolate = Isolate::Current(); | 
 |  1536  | 
|  1541   // Find the builtin debug break function matching the calling convention |  1537   // Find the builtin debug break function matching the calling convention | 
|  1542   // used by the call site. |  1538   // used by the call site. | 
|  1543   if (code->is_inline_cache_stub()) { |  1539   if (code->is_inline_cache_stub()) { | 
|  1544     switch (code->kind()) { |  1540     switch (code->kind()) { | 
|  1545       case Code::CALL_IC: |  1541       case Code::CALL_IC: | 
|  1546       case Code::KEYED_CALL_IC: |  1542       case Code::KEYED_CALL_IC: | 
|  1547         return ComputeCallDebugBreak(code->arguments_count(), code->kind()); |  1543         return isolate->stub_cache()->ComputeCallDebugBreak( | 
 |  1544             code->arguments_count(), code->kind()); | 
|  1548  |  1545  | 
|  1549       case Code::LOAD_IC: |  1546       case Code::LOAD_IC: | 
|  1550         return Isolate::Current()->builtins()->LoadIC_DebugBreak(); |  1547         return isolate->builtins()->LoadIC_DebugBreak(); | 
|  1551  |  1548  | 
|  1552       case Code::STORE_IC: |  1549       case Code::STORE_IC: | 
|  1553         return Isolate::Current()->builtins()->StoreIC_DebugBreak(); |  1550         return isolate->builtins()->StoreIC_DebugBreak(); | 
|  1554  |  1551  | 
|  1555       case Code::KEYED_LOAD_IC: |  1552       case Code::KEYED_LOAD_IC: | 
|  1556         return Isolate::Current()->builtins()->KeyedLoadIC_DebugBreak(); |  1553         return isolate->builtins()->KeyedLoadIC_DebugBreak(); | 
|  1557  |  1554  | 
|  1558       case Code::KEYED_STORE_IC: |  1555       case Code::KEYED_STORE_IC: | 
|  1559         return Isolate::Current()->builtins()->KeyedStoreIC_DebugBreak(); |  1556         return isolate->builtins()->KeyedStoreIC_DebugBreak(); | 
|  1560  |  1557  | 
|  1561       default: |  1558       default: | 
|  1562         UNREACHABLE(); |  1559         UNREACHABLE(); | 
|  1563     } |  1560     } | 
|  1564   } |  1561   } | 
|  1565   if (RelocInfo::IsConstructCall(mode)) { |  1562   if (RelocInfo::IsConstructCall(mode)) { | 
|  1566     Handle<Code> result = |  1563     if (code->has_function_cache()) { | 
|  1567         Isolate::Current()->builtins()->ConstructCall_DebugBreak(); |  1564       return isolate->builtins()->CallConstructStub_Recording_DebugBreak(); | 
|  1568     return result; |  1565     } else { | 
 |  1566       return isolate->builtins()->CallConstructStub_DebugBreak(); | 
 |  1567     } | 
|  1569   } |  1568   } | 
|  1570   if (code->kind() == Code::STUB) { |  1569   if (code->kind() == Code::STUB) { | 
|  1571     ASSERT(code->major_key() == CodeStub::CallFunction); |  1570     ASSERT(code->major_key() == CodeStub::CallFunction); | 
|  1572     Handle<Code> result = |  1571     if (code->has_function_cache()) { | 
|  1573         Isolate::Current()->builtins()->CallFunctionStub_DebugBreak(); |  1572       return isolate->builtins()->CallFunctionStub_Recording_DebugBreak(); | 
|  1574     return result; |  1573     } else { | 
 |  1574       return isolate->builtins()->CallFunctionStub_DebugBreak(); | 
 |  1575     } | 
|  1575   } |  1576   } | 
|  1576  |  1577  | 
|  1577   UNREACHABLE(); |  1578   UNREACHABLE(); | 
|  1578   return Handle<Code>::null(); |  1579   return Handle<Code>::null(); | 
|  1579 } |  1580 } | 
|  1580  |  1581  | 
|  1581  |  1582  | 
|  1582 // Simple function for returning the source positions for active break points. |  1583 // Simple function for returning the source positions for active break points. | 
|  1583 Handle<Object> Debug::GetSourceBreakLocations( |  1584 Handle<Object> Debug::GetSourceBreakLocations( | 
|  1584     Handle<SharedFunctionInfo> shared) { |  1585     Handle<SharedFunctionInfo> shared) { | 
| (...skipping 1966 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3551     { |  3552     { | 
|  3552       Locker locker; |  3553       Locker locker; | 
|  3553       Isolate::Current()->debugger()->CallMessageDispatchHandler(); |  3554       Isolate::Current()->debugger()->CallMessageDispatchHandler(); | 
|  3554     } |  3555     } | 
|  3555   } |  3556   } | 
|  3556 } |  3557 } | 
|  3557  |  3558  | 
|  3558 #endif  // ENABLE_DEBUGGER_SUPPORT |  3559 #endif  // ENABLE_DEBUGGER_SUPPORT | 
|  3559  |  3560  | 
|  3560 } }  // namespace v8::internal |  3561 } }  // namespace v8::internal | 
| OLD | NEW |