| OLD | NEW | 
|    1 // Copyright 2010 the V8 project authors. All rights reserved. |    1 // Copyright 2010 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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   51     case OTHER: |   51     case OTHER: | 
|   52       return "OTHER"; |   52       return "OTHER"; | 
|   53     case EXTERNAL: |   53     case EXTERNAL: | 
|   54       return "EXTERNAL"; |   54       return "EXTERNAL"; | 
|   55     default: |   55     default: | 
|   56       UNREACHABLE(); |   56       UNREACHABLE(); | 
|   57       return NULL; |   57       return NULL; | 
|   58   } |   58   } | 
|   59 } |   59 } | 
|   60  |   60  | 
|   61 VMState::VMState(StateTag tag) : previous_tag_(Top::current_vm_state()) { |   61  | 
 |   62 VMState::VMState(Isolate* isolate, StateTag tag) | 
 |   63     : isolate_(isolate), previous_tag_(isolate->current_vm_state()) { | 
|   62 #ifdef ENABLE_LOGGING_AND_PROFILING |   64 #ifdef ENABLE_LOGGING_AND_PROFILING | 
|   63   if (FLAG_log_state_changes) { |   65   if (FLAG_log_state_changes) { | 
|   64     LOG(UncheckedStringEvent("Entering", StateToString(tag))); |   66     LOG(isolate, UncheckedStringEvent("Entering", StateToString(tag))); | 
|   65     LOG(UncheckedStringEvent("From", StateToString(previous_tag_))); |   67     LOG(isolate, UncheckedStringEvent("From", StateToString(previous_tag_))); | 
|   66   } |   68   } | 
|   67 #endif |   69 #endif | 
|   68  |   70  | 
|   69   Top::SetCurrentVMState(tag); |   71   isolate_->SetCurrentVMState(tag); | 
|   70  |   72  | 
|   71 #ifdef ENABLE_HEAP_PROTECTION |   73 #ifdef ENABLE_HEAP_PROTECTION | 
|   72   if (FLAG_protect_heap) { |   74   if (FLAG_protect_heap) { | 
|   73     if (tag == EXTERNAL) { |   75     if (tag == EXTERNAL) { | 
|   74       // We are leaving V8. |   76       // We are leaving V8. | 
|   75       ASSERT(previous_tag_ != EXTERNAL); |   77       ASSERT(previous_tag_ != EXTERNAL); | 
|   76       Heap::Protect(); |   78       isolate_->heap()->Protect(); | 
|   77     } else if (previous_tag_ = EXTERNAL) { |   79     } else if (previous_tag_ = EXTERNAL) { | 
|   78       // We are entering V8. |   80       // We are entering V8. | 
|   79       Heap::Unprotect(); |   81       isolate_->heap()->Unprotect(); | 
|   80     } |   82     } | 
|   81   } |   83   } | 
|   82 #endif |   84 #endif | 
|   83 } |   85 } | 
|   84  |   86  | 
|   85  |   87  | 
|   86 VMState::~VMState() { |   88 VMState::~VMState() { | 
|   87 #ifdef ENABLE_LOGGING_AND_PROFILING |   89 #ifdef ENABLE_LOGGING_AND_PROFILING | 
|   88   if (FLAG_log_state_changes) { |   90   if (FLAG_log_state_changes) { | 
|   89     LOG(UncheckedStringEvent("Leaving", |   91     LOG(isolate_, | 
|   90                              StateToString(Top::current_vm_state()))); |   92         UncheckedStringEvent("Leaving", | 
|   91     LOG(UncheckedStringEvent("To", StateToString(previous_tag_))); |   93                               StateToString(isolate_->current_vm_state()))); | 
 |   94     LOG(isolate_, | 
 |   95         UncheckedStringEvent("To", StateToString(previous_tag_))); | 
|   92   } |   96   } | 
|   93 #endif  // ENABLE_LOGGING_AND_PROFILING |   97 #endif  // ENABLE_LOGGING_AND_PROFILING | 
|   94  |   98  | 
|   95 #ifdef ENABLE_HEAP_PROTECTION |   99 #ifdef ENABLE_HEAP_PROTECTION | 
|   96   StateTag tag = Top::current_vm_state(); |  100   StateTag tag = isolate_->current_vm_state(); | 
|   97 #endif |  101 #endif | 
|   98  |  102  | 
|   99   Top::SetCurrentVMState(previous_tag_); |  103   isolate_->SetCurrentVMState(previous_tag_); | 
|  100  |  104  | 
|  101 #ifdef ENABLE_HEAP_PROTECTION |  105 #ifdef ENABLE_HEAP_PROTECTION | 
|  102   if (FLAG_protect_heap) { |  106   if (FLAG_protect_heap) { | 
|  103     if (tag == EXTERNAL) { |  107     if (tag == EXTERNAL) { | 
|  104       // We are reentering V8. |  108       // We are reentering V8. | 
|  105       ASSERT(previous_tag_ != EXTERNAL); |  109       ASSERT(previous_tag_ != EXTERNAL); | 
|  106       Heap::Unprotect(); |  110       isolate_->heap()->Unprotect(); | 
|  107     } else if (previous_tag_ == EXTERNAL) { |  111     } else if (previous_tag_ == EXTERNAL) { | 
|  108       // We are leaving V8. |  112       // We are leaving V8. | 
|  109       Heap::Protect(); |  113       isolate_->heap()->Protect(); | 
|  110     } |  114     } | 
|  111   } |  115   } | 
|  112 #endif  // ENABLE_HEAP_PROTECTION |  116 #endif  // ENABLE_HEAP_PROTECTION | 
|  113 } |  117 } | 
|  114  |  118  | 
|  115 #endif  // ENABLE_VMSTATE_TRACKING |  119 #endif  // ENABLE_VMSTATE_TRACKING | 
|  116  |  120  | 
|  117  |  121  | 
|  118 #ifdef ENABLE_LOGGING_AND_PROFILING |  122 #ifdef ENABLE_LOGGING_AND_PROFILING | 
|  119  |  123  | 
|  120 ExternalCallbackScope::ExternalCallbackScope(Address callback) |  124 ExternalCallbackScope::ExternalCallbackScope(Isolate* isolate, Address callback) | 
|  121     : previous_callback_(Top::external_callback()) { |  125     : isolate_(isolate), previous_callback_(isolate->external_callback()) { | 
|  122   Top::set_external_callback(callback); |  126   isolate_->set_external_callback(callback); | 
|  123 } |  127 } | 
|  124  |  128  | 
|  125 ExternalCallbackScope::~ExternalCallbackScope() { |  129 ExternalCallbackScope::~ExternalCallbackScope() { | 
|  126   Top::set_external_callback(previous_callback_); |  130   isolate_->set_external_callback(previous_callback_); | 
|  127 } |  131 } | 
|  128  |  132  | 
|  129 #endif  // ENABLE_LOGGING_AND_PROFILING |  133 #endif  // ENABLE_LOGGING_AND_PROFILING | 
|  130  |  134  | 
|  131  |  135  | 
|  132 } }  // namespace v8::internal |  136 } }  // namespace v8::internal | 
|  133  |  137  | 
|  134 #endif  // V8_VM_STATE_INL_H_ |  138 #endif  // V8_VM_STATE_INL_H_ | 
| OLD | NEW |