OLD | NEW |
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 2370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2381 // Code common for calls using the call stub. | 2381 // Code common for calls using the call stub. |
2382 ZoneList<Expression*>* args = expr->arguments(); | 2382 ZoneList<Expression*>* args = expr->arguments(); |
2383 int arg_count = args->length(); | 2383 int arg_count = args->length(); |
2384 { PreservePositionScope scope(masm()->positions_recorder()); | 2384 { PreservePositionScope scope(masm()->positions_recorder()); |
2385 for (int i = 0; i < arg_count; i++) { | 2385 for (int i = 0; i < arg_count; i++) { |
2386 VisitForStackValue(args->at(i)); | 2386 VisitForStackValue(args->at(i)); |
2387 } | 2387 } |
2388 } | 2388 } |
2389 // Record source position for debugger. | 2389 // Record source position for debugger. |
2390 SetSourcePosition(expr->position()); | 2390 SetSourcePosition(expr->position()); |
| 2391 |
| 2392 // Record call targets in unoptimized code, but not in the snapshot. |
| 2393 if (!Serializer::enabled()) { |
| 2394 flags = static_cast<CallFunctionFlags>(flags | RECORD_CALL_TARGET); |
| 2395 Handle<Object> uninitialized = |
| 2396 TypeFeedbackCells::UninitializedSentinel(isolate()); |
| 2397 Handle<JSGlobalPropertyCell> cell = |
| 2398 isolate()->factory()->NewJSGlobalPropertyCell(uninitialized); |
| 2399 RecordTypeFeedbackCell(expr->id(), cell); |
| 2400 __ li(a2, Operand(cell)); |
| 2401 } |
| 2402 |
2391 CallFunctionStub stub(arg_count, flags); | 2403 CallFunctionStub stub(arg_count, flags); |
2392 __ lw(a1, MemOperand(sp, (arg_count + 1) * kPointerSize)); | 2404 __ lw(a1, MemOperand(sp, (arg_count + 1) * kPointerSize)); |
2393 __ CallStub(&stub); | 2405 __ CallStub(&stub); |
2394 RecordJSReturnSite(expr); | 2406 RecordJSReturnSite(expr); |
2395 // Restore context register. | 2407 // Restore context register. |
2396 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); | 2408 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); |
2397 context()->DropAndPlug(1, v0); | 2409 context()->DropAndPlug(1, v0); |
2398 } | 2410 } |
2399 | 2411 |
2400 | 2412 |
(...skipping 2258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4659 *context_length = 0; | 4671 *context_length = 0; |
4660 return previous_; | 4672 return previous_; |
4661 } | 4673 } |
4662 | 4674 |
4663 | 4675 |
4664 #undef __ | 4676 #undef __ |
4665 | 4677 |
4666 } } // namespace v8::internal | 4678 } } // namespace v8::internal |
4667 | 4679 |
4668 #endif // V8_TARGET_ARCH_MIPS | 4680 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |