OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 | 292 |
293 | 293 |
294 void VirtualFrame::InvokeBuiltin(Builtins::JavaScript id, | 294 void VirtualFrame::InvokeBuiltin(Builtins::JavaScript id, |
295 InvokeJSFlags flags, | 295 InvokeJSFlags flags, |
296 int arg_count) { | 296 int arg_count) { |
297 Forget(arg_count); | 297 Forget(arg_count); |
298 __ InvokeBuiltin(id, flags); | 298 __ InvokeBuiltin(id, flags); |
299 } | 299 } |
300 | 300 |
301 | 301 |
302 void VirtualFrame::CallLoadIC(RelocInfo::Mode mode, bool load_inlined) { | 302 void VirtualFrame::CallLoadIC(RelocInfo::Mode mode) { |
303 // If a nop is generated later make sure the it follows the call directly. | |
304 Assembler::BlockConstPoolScope block_const_pool(masm()); | |
305 | |
306 Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize)); | 303 Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize)); |
307 CallCodeObject(ic, mode, 0); | 304 CallCodeObject(ic, mode, 0); |
308 if (!load_inlined) { | |
309 // A B instruction following the call signals that the load was inlined. | |
310 // Ensure that there is not a B instruction here. | |
311 __ nop(); | |
312 } | |
313 } | 305 } |
314 | 306 |
315 | 307 |
316 void VirtualFrame::CallCodeObject(Handle<Code> code, | 308 void VirtualFrame::CallCodeObject(Handle<Code> code, |
317 RelocInfo::Mode rmode, | 309 RelocInfo::Mode rmode, |
318 int dropped_args) { | 310 int dropped_args) { |
319 switch (code->kind()) { | 311 switch (code->kind()) { |
320 case Code::CALL_IC: | 312 case Code::CALL_IC: |
321 case Code::FUNCTION: | 313 case Code::FUNCTION: |
322 break; | 314 break; |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 default: | 516 default: |
525 UNREACHABLE(); | 517 UNREACHABLE(); |
526 break; | 518 break; |
527 } | 519 } |
528 ASSERT(register_allocation_map_ == 0); // Not yet implemented. | 520 ASSERT(register_allocation_map_ == 0); // Not yet implemented. |
529 } | 521 } |
530 | 522 |
531 #undef __ | 523 #undef __ |
532 | 524 |
533 } } // namespace v8::internal | 525 } } // namespace v8::internal |
OLD | NEW |