Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Side by Side Diff: src/arm/deoptimizer-arm.cc

Issue 23480013: Turn interrupt and stack check into builtins. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: fix mips Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/code-stubs-arm.cc ('k') | src/arm/full-codegen-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 if (Assembler::IsNop(Assembler::instr_at(pc_after - 3 * kInstrSize))) { 154 if (Assembler::IsNop(Assembler::instr_at(pc_after - 3 * kInstrSize))) {
155 ASSERT(Assembler::IsLdrPcImmediateOffset( 155 ASSERT(Assembler::IsLdrPcImmediateOffset(
156 Assembler::instr_at(pc_after - 2 * kInstrSize))); 156 Assembler::instr_at(pc_after - 2 * kInstrSize)));
157 Code* osr_builtin = 157 Code* osr_builtin =
158 isolate->builtins()->builtin(Builtins::kOnStackReplacement); 158 isolate->builtins()->builtin(Builtins::kOnStackReplacement);
159 ASSERT(reinterpret_cast<uint32_t>(osr_builtin->entry()) == 159 ASSERT(reinterpret_cast<uint32_t>(osr_builtin->entry()) ==
160 Memory::uint32_at(interrupt_address_pointer)); 160 Memory::uint32_at(interrupt_address_pointer));
161 return PATCHED_FOR_OSR; 161 return PATCHED_FOR_OSR;
162 } else { 162 } else {
163 // Get the interrupt stub code object to match against from cache. 163 // Get the interrupt stub code object to match against from cache.
164 Code* interrupt_code = NULL; 164 Code* interrupt_builtin =
165 InterruptStub stub; 165 isolate->builtins()->builtin(Builtins::kInterruptCheck);
166 if (!stub.FindCodeInCache(&interrupt_code, isolate)) UNREACHABLE();
167 ASSERT(Assembler::IsLdrPcImmediateOffset( 166 ASSERT(Assembler::IsLdrPcImmediateOffset(
168 Assembler::instr_at(pc_after - 2 * kInstrSize))); 167 Assembler::instr_at(pc_after - 2 * kInstrSize)));
169 ASSERT_EQ(kBranchBeforeInterrupt, 168 ASSERT_EQ(kBranchBeforeInterrupt,
170 Memory::int32_at(pc_after - 3 * kInstrSize)); 169 Memory::int32_at(pc_after - 3 * kInstrSize));
171 ASSERT(reinterpret_cast<uint32_t>(interrupt_code->entry()) == 170 ASSERT(reinterpret_cast<uint32_t>(interrupt_builtin->entry()) ==
172 Memory::uint32_at(interrupt_address_pointer)); 171 Memory::uint32_at(interrupt_address_pointer));
173 return NOT_PATCHED; 172 return NOT_PATCHED;
174 } 173 }
175 } 174 }
176 #endif // DEBUG 175 #endif // DEBUG
177 176
178 177
179 static int LookupBailoutId(DeoptimizationInputData* data, BailoutId ast_id) { 178 static int LookupBailoutId(DeoptimizationInputData* data, BailoutId ast_id) {
180 ByteArray* translations = data->TranslationByteArray(); 179 ByteArray* translations = data->TranslationByteArray();
181 int length = data->DeoptCount(); 180 int length = data->DeoptCount();
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 604
606 605
607 void FrameDescription::SetCallerFp(unsigned offset, intptr_t value) { 606 void FrameDescription::SetCallerFp(unsigned offset, intptr_t value) {
608 SetFrameSlot(offset, value); 607 SetFrameSlot(offset, value);
609 } 608 }
610 609
611 610
612 #undef __ 611 #undef __
613 612
614 } } // namespace v8::internal 613 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/code-stubs-arm.cc ('k') | src/arm/full-codegen-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698