OLD | NEW |
---|---|
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 16 matching lines...) Expand all Loading... | |
27 | 27 |
28 #include "v8.h" | 28 #include "v8.h" |
29 | 29 |
30 #include "accessors.h" | 30 #include "accessors.h" |
31 #include "codegen.h" | 31 #include "codegen.h" |
32 #include "deoptimizer.h" | 32 #include "deoptimizer.h" |
33 #include "disasm.h" | 33 #include "disasm.h" |
34 #include "full-codegen.h" | 34 #include "full-codegen.h" |
35 #include "global-handles.h" | 35 #include "global-handles.h" |
36 #include "macro-assembler.h" | 36 #include "macro-assembler.h" |
37 #include "msan.h" | |
37 #include "prettyprinter.h" | 38 #include "prettyprinter.h" |
38 | 39 |
39 | 40 |
40 namespace v8 { | 41 namespace v8 { |
41 namespace internal { | 42 namespace internal { |
42 | 43 |
43 static MemoryChunk* AllocateCodeChunk(MemoryAllocator* allocator) { | 44 static MemoryChunk* AllocateCodeChunk(MemoryAllocator* allocator) { |
44 return allocator->AllocateChunk(Deoptimizer::GetMaxDeoptTableSize(), | 45 return allocator->AllocateChunk(Deoptimizer::GetMaxDeoptTableSize(), |
45 OS::CommitPageSize(), | 46 OS::CommitPageSize(), |
46 #if defined(__native_client__) | 47 #if defined(__native_client__) |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
101 | 102 |
102 | 103 |
103 // We rely on this function not causing a GC. It is called from generated code | 104 // We rely on this function not causing a GC. It is called from generated code |
104 // without having a real stack frame in place. | 105 // without having a real stack frame in place. |
105 Deoptimizer* Deoptimizer::New(JSFunction* function, | 106 Deoptimizer* Deoptimizer::New(JSFunction* function, |
106 BailoutType type, | 107 BailoutType type, |
107 unsigned bailout_id, | 108 unsigned bailout_id, |
108 Address from, | 109 Address from, |
109 int fp_to_sp_delta, | 110 int fp_to_sp_delta, |
110 Isolate* isolate) { | 111 Isolate* isolate) { |
112 MSAN_RUNTIME_FUNCTION6(function, type, bailout_id, from, fp_to_sp_delta, | |
113 isolate); | |
111 Deoptimizer* deoptimizer = new Deoptimizer(isolate, | 114 Deoptimizer* deoptimizer = new Deoptimizer(isolate, |
danno
2013/10/10 14:18:07
This big unpoison of the stack is total overkill.
Evgeniy Stepanov
2013/10/10 15:08:54
Thanks, this is very helpful!
| |
112 function, | 115 function, |
113 type, | 116 type, |
114 bailout_id, | 117 bailout_id, |
115 from, | 118 from, |
116 fp_to_sp_delta, | 119 fp_to_sp_delta, |
117 NULL); | 120 NULL); |
118 ASSERT(isolate->deoptimizer_data()->current_ == NULL); | 121 ASSERT(isolate->deoptimizer_data()->current_ == NULL); |
119 isolate->deoptimizer_data()->current_ = deoptimizer; | 122 isolate->deoptimizer_data()->current_ = deoptimizer; |
120 return deoptimizer; | 123 return deoptimizer; |
121 } | 124 } |
(...skipping 2816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2938 | 2941 |
2939 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { | 2942 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { |
2940 v->VisitPointer(BitCast<Object**>(&function_)); | 2943 v->VisitPointer(BitCast<Object**>(&function_)); |
2941 v->VisitPointers(parameters_, parameters_ + parameters_count_); | 2944 v->VisitPointers(parameters_, parameters_ + parameters_count_); |
2942 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); | 2945 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); |
2943 } | 2946 } |
2944 | 2947 |
2945 #endif // ENABLE_DEBUGGER_SUPPORT | 2948 #endif // ENABLE_DEBUGGER_SUPPORT |
2946 | 2949 |
2947 } } // namespace v8::internal | 2950 } } // namespace v8::internal |
OLD | NEW |