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 5393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5404 if (instr->size()->IsRegister()) { | 5404 if (instr->size()->IsRegister()) { |
5405 Register size = ToRegister(instr->size()); | 5405 Register size = ToRegister(instr->size()); |
5406 ASSERT(!size.is(result)); | 5406 ASSERT(!size.is(result)); |
5407 __ SmiTag(size); | 5407 __ SmiTag(size); |
5408 __ push(size); | 5408 __ push(size); |
5409 } else { | 5409 } else { |
5410 int32_t size = ToInteger32(LConstantOperand::cast(instr->size())); | 5410 int32_t size = ToInteger32(LConstantOperand::cast(instr->size())); |
5411 __ Push(Smi::FromInt(size)); | 5411 __ Push(Smi::FromInt(size)); |
5412 } | 5412 } |
5413 | 5413 |
| 5414 int flags = AllocateDoubleAlignFlag::encode( |
| 5415 instr->hydrogen()->MustAllocateDoubleAligned()); |
5414 if (instr->hydrogen()->IsOldPointerSpaceAllocation()) { | 5416 if (instr->hydrogen()->IsOldPointerSpaceAllocation()) { |
5415 ASSERT(!instr->hydrogen()->IsOldDataSpaceAllocation()); | 5417 ASSERT(!instr->hydrogen()->IsOldDataSpaceAllocation()); |
5416 ASSERT(!instr->hydrogen()->IsNewSpaceAllocation()); | 5418 ASSERT(!instr->hydrogen()->IsNewSpaceAllocation()); |
5417 CallRuntimeFromDeferred(Runtime::kAllocateInOldPointerSpace, 1, instr, | 5419 flags = AllocateTargetSpace::update(flags, OLD_POINTER_SPACE); |
5418 instr->context()); | |
5419 } else if (instr->hydrogen()->IsOldDataSpaceAllocation()) { | 5420 } else if (instr->hydrogen()->IsOldDataSpaceAllocation()) { |
5420 ASSERT(!instr->hydrogen()->IsNewSpaceAllocation()); | 5421 ASSERT(!instr->hydrogen()->IsNewSpaceAllocation()); |
5421 CallRuntimeFromDeferred(Runtime::kAllocateInOldDataSpace, 1, instr, | 5422 flags = AllocateTargetSpace::update(flags, OLD_DATA_SPACE); |
5422 instr->context()); | |
5423 } else { | 5423 } else { |
5424 CallRuntimeFromDeferred(Runtime::kAllocateInNewSpace, 1, instr, | 5424 flags = AllocateTargetSpace::update(flags, NEW_SPACE); |
5425 instr->context()); | |
5426 } | 5425 } |
| 5426 __ Push(Smi::FromInt(flags)); |
| 5427 |
| 5428 CallRuntimeFromDeferred( |
| 5429 Runtime::kAllocateInTargetSpace, 2, instr, instr->context()); |
5427 __ StoreToSafepointRegisterSlot(v0, result); | 5430 __ StoreToSafepointRegisterSlot(v0, result); |
5428 } | 5431 } |
5429 | 5432 |
5430 | 5433 |
5431 void LCodeGen::DoToFastProperties(LToFastProperties* instr) { | 5434 void LCodeGen::DoToFastProperties(LToFastProperties* instr) { |
5432 ASSERT(ToRegister(instr->value()).is(a0)); | 5435 ASSERT(ToRegister(instr->value()).is(a0)); |
5433 ASSERT(ToRegister(instr->result()).is(v0)); | 5436 ASSERT(ToRegister(instr->result()).is(v0)); |
5434 __ push(a0); | 5437 __ push(a0); |
5435 CallRuntime(Runtime::kToFastProperties, 1, instr); | 5438 CallRuntime(Runtime::kToFastProperties, 1, instr); |
5436 } | 5439 } |
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5890 __ Subu(scratch, result, scratch); | 5893 __ Subu(scratch, result, scratch); |
5891 __ lw(result, FieldMemOperand(scratch, | 5894 __ lw(result, FieldMemOperand(scratch, |
5892 FixedArray::kHeaderSize - kPointerSize)); | 5895 FixedArray::kHeaderSize - kPointerSize)); |
5893 __ bind(&done); | 5896 __ bind(&done); |
5894 } | 5897 } |
5895 | 5898 |
5896 | 5899 |
5897 #undef __ | 5900 #undef __ |
5898 | 5901 |
5899 } } // namespace v8::internal | 5902 } } // namespace v8::internal |
OLD | NEW |