| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 1981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1992 case CodeStub::RegExpExec: { | 1992 case CodeStub::RegExpExec: { |
| 1993 RegExpExecStub stub; | 1993 RegExpExecStub stub; |
| 1994 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | 1994 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); |
| 1995 break; | 1995 break; |
| 1996 } | 1996 } |
| 1997 case CodeStub::SubString: { | 1997 case CodeStub::SubString: { |
| 1998 SubStringStub stub; | 1998 SubStringStub stub; |
| 1999 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | 1999 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); |
| 2000 break; | 2000 break; |
| 2001 } | 2001 } |
| 2002 case CodeStub::NumberToString: { | |
| 2003 NumberToStringStub stub; | |
| 2004 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | |
| 2005 break; | |
| 2006 } | |
| 2007 case CodeStub::StringCompare: { | 2002 case CodeStub::StringCompare: { |
| 2008 StringCompareStub stub; | 2003 StringCompareStub stub; |
| 2009 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | 2004 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); |
| 2010 break; | 2005 break; |
| 2011 } | 2006 } |
| 2012 case CodeStub::TranscendentalCache: { | 2007 case CodeStub::TranscendentalCache: { |
| 2013 __ Peek(x0, 0); | 2008 __ Peek(x0, 0); |
| 2014 TranscendentalCacheStub stub(instr->transcendental_type(), | 2009 TranscendentalCacheStub stub(instr->transcendental_type(), |
| 2015 TranscendentalCacheStub::TAGGED); | 2010 TranscendentalCacheStub::TAGGED); |
| 2016 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | 2011 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); |
| (...skipping 1257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3274 __ Bind(&deopt); | 3269 __ Bind(&deopt); |
| 3275 Deoptimize(instr->environment()); | 3270 Deoptimize(instr->environment()); |
| 3276 | 3271 |
| 3277 // All done. | 3272 // All done. |
| 3278 __ Bind(&done); | 3273 __ Bind(&done); |
| 3279 } | 3274 } |
| 3280 | 3275 |
| 3281 | 3276 |
| 3282 void LCodeGen::DoLoadGlobalCell(LLoadGlobalCell* instr) { | 3277 void LCodeGen::DoLoadGlobalCell(LLoadGlobalCell* instr) { |
| 3283 Register result = ToRegister(instr->result()); | 3278 Register result = ToRegister(instr->result()); |
| 3284 __ Mov(result, Operand(Handle<Object>(instr->hydrogen()->cell()))); | 3279 __ Mov(result, Operand(Handle<Object>(instr->hydrogen()->cell().handle()))); |
| 3285 __ Ldr(result, FieldMemOperand(result, Cell::kValueOffset)); | 3280 __ Ldr(result, FieldMemOperand(result, Cell::kValueOffset)); |
| 3286 if (instr->hydrogen()->RequiresHoleCheck()) { | 3281 if (instr->hydrogen()->RequiresHoleCheck()) { |
| 3287 DeoptimizeIfRoot( | 3282 DeoptimizeIfRoot( |
| 3288 result, Heap::kTheHoleValueRootIndex, instr->environment()); | 3283 result, Heap::kTheHoleValueRootIndex, instr->environment()); |
| 3289 } | 3284 } |
| 3290 } | 3285 } |
| 3291 | 3286 |
| 3292 | 3287 |
| 3293 void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { | 3288 void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { |
| 3294 ASSERT(ToRegister(instr->global_object()).Is(x0)); | 3289 ASSERT(ToRegister(instr->global_object()).Is(x0)); |
| (...skipping 1463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4758 } | 4753 } |
| 4759 __ Bind(&skip_assignment); | 4754 __ Bind(&skip_assignment); |
| 4760 } | 4755 } |
| 4761 | 4756 |
| 4762 | 4757 |
| 4763 void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { | 4758 void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { |
| 4764 Register value = ToRegister(instr->value()); | 4759 Register value = ToRegister(instr->value()); |
| 4765 Register cell = ToRegister(instr->temp1()); | 4760 Register cell = ToRegister(instr->temp1()); |
| 4766 | 4761 |
| 4767 // Load the cell. | 4762 // Load the cell. |
| 4768 __ Mov(cell, Operand(instr->hydrogen()->cell())); | 4763 __ Mov(cell, Operand(instr->hydrogen()->cell().handle())); |
| 4769 | 4764 |
| 4770 // If the cell we are storing to contains the hole it could have | 4765 // If the cell we are storing to contains the hole it could have |
| 4771 // been deleted from the property dictionary. In that case, we need | 4766 // been deleted from the property dictionary. In that case, we need |
| 4772 // to update the property details in the property dictionary to mark | 4767 // to update the property details in the property dictionary to mark |
| 4773 // it as no longer deleted. We deoptimize in that case. | 4768 // it as no longer deleted. We deoptimize in that case. |
| 4774 if (instr->hydrogen()->RequiresHoleCheck()) { | 4769 if (instr->hydrogen()->RequiresHoleCheck()) { |
| 4775 Register payload = ToRegister(instr->temp2()); | 4770 Register payload = ToRegister(instr->temp2()); |
| 4776 __ Ldr(payload, FieldMemOperand(cell, Cell::kValueOffset)); | 4771 __ Ldr(payload, FieldMemOperand(cell, Cell::kValueOffset)); |
| 4777 DeoptimizeIfRoot( | 4772 DeoptimizeIfRoot( |
| 4778 payload, Heap::kTheHoleValueRootIndex, instr->environment()); | 4773 payload, Heap::kTheHoleValueRootIndex, instr->environment()); |
| (...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5602 __ Bind(&out_of_object); | 5597 __ Bind(&out_of_object); |
| 5603 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); | 5598 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); |
| 5604 // Index is equal to negated out of object property index plus 1. | 5599 // Index is equal to negated out of object property index plus 1. |
| 5605 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); | 5600 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); |
| 5606 __ Ldr(result, FieldMemOperand(result, | 5601 __ Ldr(result, FieldMemOperand(result, |
| 5607 FixedArray::kHeaderSize - kPointerSize)); | 5602 FixedArray::kHeaderSize - kPointerSize)); |
| 5608 __ Bind(&done); | 5603 __ Bind(&done); |
| 5609 } | 5604 } |
| 5610 | 5605 |
| 5611 } } // namespace v8::internal | 5606 } } // namespace v8::internal |
| OLD | NEW |