OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/crankshaft/ppc/lithium-ppc.h" | 5 #include "src/crankshaft/ppc/lithium-ppc.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/crankshaft/hydrogen-osr.h" | 9 #include "src/crankshaft/hydrogen-osr.h" |
10 #include "src/crankshaft/lithium-inl.h" | 10 #include "src/crankshaft/lithium-inl.h" |
(...skipping 1932 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1943 return DefineAsRegister(new (zone()) LConstantT); | 1943 return DefineAsRegister(new (zone()) LConstantT); |
1944 } else { | 1944 } else { |
1945 UNREACHABLE(); | 1945 UNREACHABLE(); |
1946 return NULL; | 1946 return NULL; |
1947 } | 1947 } |
1948 } | 1948 } |
1949 | 1949 |
1950 | 1950 |
1951 LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { | 1951 LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |
1952 LOperand* context = UseRegisterAtStart(instr->value()); | 1952 LOperand* context = UseRegisterAtStart(instr->value()); |
1953 return DefineAsRegister(new (zone()) LLoadContextSlot(context)); | 1953 LInstruction* result = |
| 1954 DefineAsRegister(new (zone()) LLoadContextSlot(context)); |
| 1955 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { |
| 1956 result = AssignEnvironment(result); |
| 1957 } |
| 1958 return result; |
1954 } | 1959 } |
1955 | 1960 |
1956 | 1961 |
1957 LInstruction* LChunkBuilder::DoStoreContextSlot(HStoreContextSlot* instr) { | 1962 LInstruction* LChunkBuilder::DoStoreContextSlot(HStoreContextSlot* instr) { |
1958 LOperand* context; | 1963 LOperand* context; |
1959 LOperand* value; | 1964 LOperand* value; |
1960 if (instr->NeedsWriteBarrier()) { | 1965 if (instr->NeedsWriteBarrier()) { |
1961 context = UseTempRegister(instr->context()); | 1966 context = UseTempRegister(instr->context()); |
1962 value = UseTempRegister(instr->value()); | 1967 value = UseTempRegister(instr->value()); |
1963 } else { | 1968 } else { |
1964 context = UseRegister(instr->context()); | 1969 context = UseRegister(instr->context()); |
1965 value = UseRegister(instr->value()); | 1970 value = UseRegister(instr->value()); |
1966 } | 1971 } |
1967 return new (zone()) LStoreContextSlot(context, value); | 1972 LInstruction* result = new (zone()) LStoreContextSlot(context, value); |
| 1973 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { |
| 1974 result = AssignEnvironment(result); |
| 1975 } |
| 1976 return result; |
1968 } | 1977 } |
1969 | 1978 |
1970 | 1979 |
1971 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { | 1980 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { |
1972 LOperand* obj = UseRegisterAtStart(instr->object()); | 1981 LOperand* obj = UseRegisterAtStart(instr->object()); |
1973 return DefineAsRegister(new (zone()) LLoadNamedField(obj)); | 1982 return DefineAsRegister(new (zone()) LLoadNamedField(obj)); |
1974 } | 1983 } |
1975 | 1984 |
1976 | 1985 |
1977 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( | 1986 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2352 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { | 2361 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { |
2353 LOperand* object = UseRegister(instr->object()); | 2362 LOperand* object = UseRegister(instr->object()); |
2354 LOperand* index = UseTempRegister(instr->index()); | 2363 LOperand* index = UseTempRegister(instr->index()); |
2355 LLoadFieldByIndex* load = new (zone()) LLoadFieldByIndex(object, index); | 2364 LLoadFieldByIndex* load = new (zone()) LLoadFieldByIndex(object, index); |
2356 LInstruction* result = DefineSameAsFirst(load); | 2365 LInstruction* result = DefineSameAsFirst(load); |
2357 return AssignPointerMap(result); | 2366 return AssignPointerMap(result); |
2358 } | 2367 } |
2359 | 2368 |
2360 } // namespace internal | 2369 } // namespace internal |
2361 } // namespace v8 | 2370 } // namespace v8 |
OLD | NEW |