OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/cpu-profiler.h" | 10 #include "src/cpu-profiler.h" |
(...skipping 877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
888 int result = deoptimization_literals_.length(); | 888 int result = deoptimization_literals_.length(); |
889 for (int i = 0; i < deoptimization_literals_.length(); ++i) { | 889 for (int i = 0; i < deoptimization_literals_.length(); ++i) { |
890 if (deoptimization_literals_[i].is_identical_to(literal)) return i; | 890 if (deoptimization_literals_[i].is_identical_to(literal)) return i; |
891 } | 891 } |
892 deoptimization_literals_.Add(literal, zone()); | 892 deoptimization_literals_.Add(literal, zone()); |
893 return result; | 893 return result; |
894 } | 894 } |
895 | 895 |
896 | 896 |
897 void LCodeGen::PopulateDeoptimizationLiteralsWithInlinedFunctions() { | 897 void LCodeGen::PopulateDeoptimizationLiteralsWithInlinedFunctions() { |
898 DCHECK(deoptimization_literals_.length() == 0); | 898 DCHECK_EQ(0, deoptimization_literals_.length()); |
899 | 899 const ZoneList<Handle<JSFunction>>* const inlined_closures = |
900 const ZoneList<Handle<JSFunction> >* inlined_closures = | |
901 chunk()->inlined_closures(); | 900 chunk()->inlined_closures(); |
902 | 901 for (int i = 0; i < inlined_closures->length(); ++i) { |
903 for (int i = 0, length = inlined_closures->length(); i < length; i++) { | 902 DefineDeoptimizationLiteral(handle(inlined_closures->at(i)->shared())); |
904 DefineDeoptimizationLiteral(inlined_closures->at(i)); | |
905 } | 903 } |
906 | |
907 inlined_function_count_ = deoptimization_literals_.length(); | 904 inlined_function_count_ = deoptimization_literals_.length(); |
908 } | 905 } |
909 | 906 |
910 | 907 |
911 void LCodeGen::RecordSafepointWithLazyDeopt(LInstruction* instr, | 908 void LCodeGen::RecordSafepointWithLazyDeopt(LInstruction* instr, |
912 SafepointMode safepoint_mode) { | 909 SafepointMode safepoint_mode) { |
913 if (safepoint_mode == RECORD_SIMPLE_SAFEPOINT) { | 910 if (safepoint_mode == RECORD_SIMPLE_SAFEPOINT) { |
914 RecordSafepoint(instr->pointer_map(), Safepoint::kLazyDeopt); | 911 RecordSafepoint(instr->pointer_map(), Safepoint::kLazyDeopt); |
915 } else { | 912 } else { |
916 DCHECK(safepoint_mode == RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); | 913 DCHECK(safepoint_mode == RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); |
(...skipping 5363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6280 __ Push(scope_info); | 6277 __ Push(scope_info); |
6281 __ push(ToRegister(instr->function())); | 6278 __ push(ToRegister(instr->function())); |
6282 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6279 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
6283 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6280 RecordSafepoint(Safepoint::kNoLazyDeopt); |
6284 } | 6281 } |
6285 | 6282 |
6286 | 6283 |
6287 #undef __ | 6284 #undef __ |
6288 } | 6285 } |
6289 } // namespace v8::internal | 6286 } // namespace v8::internal |
OLD | NEW |