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 3374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3385 Register index = rbx; | 3385 Register index = rbx; |
3386 Register value = rcx; | 3386 Register value = rcx; |
3387 | 3387 |
3388 VisitForStackValue(args->at(1)); // index | 3388 VisitForStackValue(args->at(1)); // index |
3389 VisitForStackValue(args->at(2)); // value | 3389 VisitForStackValue(args->at(2)); // value |
3390 VisitForAccumulatorValue(args->at(0)); // string | 3390 VisitForAccumulatorValue(args->at(0)); // string |
3391 __ pop(value); | 3391 __ pop(value); |
3392 __ pop(index); | 3392 __ pop(index); |
3393 | 3393 |
3394 if (FLAG_debug_code) { | 3394 if (FLAG_debug_code) { |
3395 __ ThrowIf(NegateCondition(__ CheckSmi(value)), kNonSmiValue); | 3395 __ Check(__ CheckSmi(value), kNonSmiValue); |
3396 __ ThrowIf(NegateCondition(__ CheckSmi(index)), kNonSmiValue); | 3396 __ Check(__ CheckSmi(index), kNonSmiValue); |
3397 } | 3397 } |
3398 | 3398 |
3399 __ SmiToInteger32(value, value); | 3399 __ SmiToInteger32(value, value); |
3400 __ SmiToInteger32(index, index); | 3400 __ SmiToInteger32(index, index); |
3401 | 3401 |
3402 if (FLAG_debug_code) { | 3402 if (FLAG_debug_code) { |
3403 static const uint32_t one_byte_seq_type = kSeqStringTag | kOneByteStringTag; | 3403 static const uint32_t one_byte_seq_type = kSeqStringTag | kOneByteStringTag; |
3404 __ EmitSeqStringSetCharCheck(string, index, value, one_byte_seq_type); | 3404 __ EmitSeqStringSetCharCheck(string, index, value, one_byte_seq_type); |
3405 } | 3405 } |
3406 | 3406 |
(...skipping 11 matching lines...) Expand all Loading... |
3418 Register index = rbx; | 3418 Register index = rbx; |
3419 Register value = rcx; | 3419 Register value = rcx; |
3420 | 3420 |
3421 VisitForStackValue(args->at(1)); // index | 3421 VisitForStackValue(args->at(1)); // index |
3422 VisitForStackValue(args->at(2)); // value | 3422 VisitForStackValue(args->at(2)); // value |
3423 VisitForAccumulatorValue(args->at(0)); // string | 3423 VisitForAccumulatorValue(args->at(0)); // string |
3424 __ pop(value); | 3424 __ pop(value); |
3425 __ pop(index); | 3425 __ pop(index); |
3426 | 3426 |
3427 if (FLAG_debug_code) { | 3427 if (FLAG_debug_code) { |
3428 __ ThrowIf(NegateCondition(__ CheckSmi(value)), kNonSmiValue); | 3428 __ Check(__ CheckSmi(value), kNonSmiValue); |
3429 __ ThrowIf(NegateCondition(__ CheckSmi(index)), kNonSmiValue); | 3429 __ Check(__ CheckSmi(index), kNonSmiValue); |
3430 } | 3430 } |
3431 | 3431 |
3432 __ SmiToInteger32(value, value); | 3432 __ SmiToInteger32(value, value); |
3433 __ SmiToInteger32(index, index); | 3433 __ SmiToInteger32(index, index); |
3434 | 3434 |
3435 if (FLAG_debug_code) { | 3435 if (FLAG_debug_code) { |
3436 static const uint32_t two_byte_seq_type = kSeqStringTag | kTwoByteStringTag; | 3436 static const uint32_t two_byte_seq_type = kSeqStringTag | kTwoByteStringTag; |
3437 __ EmitSeqStringSetCharCheck(string, index, value, two_byte_seq_type); | 3437 __ EmitSeqStringSetCharCheck(string, index, value, two_byte_seq_type); |
3438 } | 3438 } |
3439 | 3439 |
(...skipping 1453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4893 | 4893 |
4894 ASSERT_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), | 4894 ASSERT_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), |
4895 Assembler::target_address_at(call_target_address)); | 4895 Assembler::target_address_at(call_target_address)); |
4896 return OSR_AFTER_STACK_CHECK; | 4896 return OSR_AFTER_STACK_CHECK; |
4897 } | 4897 } |
4898 | 4898 |
4899 | 4899 |
4900 } } // namespace v8::internal | 4900 } } // namespace v8::internal |
4901 | 4901 |
4902 #endif // V8_TARGET_ARCH_X64 | 4902 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |