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 LInstruction* result = | 1953 return DefineAsRegister(new (zone()) LLoadContextSlot(context)); |
1954 DefineAsRegister(new (zone()) LLoadContextSlot(context)); | |
1955 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { | |
1956 result = AssignEnvironment(result); | |
1957 } | |
1958 return result; | |
1959 } | 1954 } |
1960 | 1955 |
1961 | 1956 |
1962 LInstruction* LChunkBuilder::DoStoreContextSlot(HStoreContextSlot* instr) { | 1957 LInstruction* LChunkBuilder::DoStoreContextSlot(HStoreContextSlot* instr) { |
1963 LOperand* context; | 1958 LOperand* context; |
1964 LOperand* value; | 1959 LOperand* value; |
1965 if (instr->NeedsWriteBarrier()) { | 1960 if (instr->NeedsWriteBarrier()) { |
1966 context = UseTempRegister(instr->context()); | 1961 context = UseTempRegister(instr->context()); |
1967 value = UseTempRegister(instr->value()); | 1962 value = UseTempRegister(instr->value()); |
1968 } else { | 1963 } else { |
1969 context = UseRegister(instr->context()); | 1964 context = UseRegister(instr->context()); |
1970 value = UseRegister(instr->value()); | 1965 value = UseRegister(instr->value()); |
1971 } | 1966 } |
1972 LInstruction* result = new (zone()) LStoreContextSlot(context, value); | 1967 return new (zone()) LStoreContextSlot(context, value); |
1973 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { | |
1974 result = AssignEnvironment(result); | |
1975 } | |
1976 return result; | |
1977 } | 1968 } |
1978 | 1969 |
1979 | 1970 |
1980 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { | 1971 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { |
1981 LOperand* obj = UseRegisterAtStart(instr->object()); | 1972 LOperand* obj = UseRegisterAtStart(instr->object()); |
1982 return DefineAsRegister(new (zone()) LLoadNamedField(obj)); | 1973 return DefineAsRegister(new (zone()) LLoadNamedField(obj)); |
1983 } | 1974 } |
1984 | 1975 |
1985 | 1976 |
1986 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( | 1977 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2361 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { | 2352 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { |
2362 LOperand* object = UseRegister(instr->object()); | 2353 LOperand* object = UseRegister(instr->object()); |
2363 LOperand* index = UseTempRegister(instr->index()); | 2354 LOperand* index = UseTempRegister(instr->index()); |
2364 LLoadFieldByIndex* load = new (zone()) LLoadFieldByIndex(object, index); | 2355 LLoadFieldByIndex* load = new (zone()) LLoadFieldByIndex(object, index); |
2365 LInstruction* result = DefineSameAsFirst(load); | 2356 LInstruction* result = DefineSameAsFirst(load); |
2366 return AssignPointerMap(result); | 2357 return AssignPointerMap(result); |
2367 } | 2358 } |
2368 | 2359 |
2369 } // namespace internal | 2360 } // namespace internal |
2370 } // namespace v8 | 2361 } // namespace v8 |
OLD | NEW |