Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include <setjmp.h> // NOLINT | 5 #include <setjmp.h> // NOLINT |
| 6 #include <stdlib.h> | 6 #include <stdlib.h> |
| 7 | 7 |
| 8 #include "vm/globals.h" | 8 #include "vm/globals.h" |
| 9 #if defined(TARGET_ARCH_DBC) | 9 #if defined(TARGET_ARCH_DBC) |
| 10 | 10 |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 244 return static_cast<RawCode*>(FP[kPcMarkerSlotFromFp]); | 244 return static_cast<RawCode*>(FP[kPcMarkerSlotFromFp]); |
| 245 } | 245 } |
| 246 | 246 |
| 247 | 247 |
| 248 DART_FORCE_INLINE static void SetFrameCode(RawObject** FP, RawCode* code) { | 248 DART_FORCE_INLINE static void SetFrameCode(RawObject** FP, RawCode* code) { |
| 249 ASSERT(GetClassId(code) == kCodeCid); | 249 ASSERT(GetClassId(code) == kCodeCid); |
| 250 FP[kPcMarkerSlotFromFp] = code; | 250 FP[kPcMarkerSlotFromFp] = code; |
| 251 } | 251 } |
| 252 | 252 |
| 253 DART_FORCE_INLINE static uint8_t* GetTypedData( | 253 DART_FORCE_INLINE static uint8_t* GetTypedData( |
| 254 RawObject* obj, RawObject* index, intptr_t scale) { | 254 RawObject* obj, RawObject* index) { |
| 255 ASSERT(RawObject::IsTypedDataClassId(obj->GetClassId())); | 255 ASSERT(RawObject::IsTypedDataClassId(obj->GetClassId())); |
| 256 RawTypedData* array = reinterpret_cast<RawTypedData*>(obj); | 256 RawTypedData* array = reinterpret_cast<RawTypedData*>(obj); |
| 257 const intptr_t byte_offset = Smi::Value(RAW_CAST(Smi, index)); | 257 const intptr_t byte_offset = Smi::Value(RAW_CAST(Smi, index)); |
| 258 ASSERT(byte_offset >= 0); | 258 ASSERT(byte_offset >= 0); |
| 259 return array->ptr()->data() + byte_offset; | 259 return array->ptr()->data() + byte_offset; |
| 260 } | 260 } |
| 261 }; | 261 }; |
| 262 | 262 |
| 263 | 263 |
| 264 DART_FORCE_INLINE static uint32_t* SavedCallerPC(RawObject** FP) { | 264 DART_FORCE_INLINE static uint32_t* SavedCallerPC(RawObject** FP) { |
| (...skipping 1697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1962 | 1962 |
| 1963 { | 1963 { |
| 1964 BYTECODE(DMax, A_B_C); | 1964 BYTECODE(DMax, A_B_C); |
| 1965 const double lhs = bit_cast<double, RawObject*>(FP[rB]); | 1965 const double lhs = bit_cast<double, RawObject*>(FP[rB]); |
| 1966 const double rhs = bit_cast<double, RawObject*>(FP[rC]); | 1966 const double rhs = bit_cast<double, RawObject*>(FP[rC]); |
| 1967 FP[rA] = bit_cast<RawObject*, double>(fmax(lhs, rhs)); | 1967 FP[rA] = bit_cast<RawObject*, double>(fmax(lhs, rhs)); |
| 1968 DISPATCH(); | 1968 DISPATCH(); |
| 1969 } | 1969 } |
| 1970 | 1970 |
| 1971 { | 1971 { |
| 1972 BYTECODE(DTruncate, A_D); | |
| 1973 const double value = bit_cast<double, RawObject*>(FP[rD]); | |
| 1974 FP[rA] = bit_cast<RawObject*, double>(trunc(value)); | |
| 1975 DISPATCH(); | |
| 1976 } | |
| 1977 | |
| 1978 { | |
| 1979 BYTECODE(DFloor, A_D); | |
| 1980 const double value = bit_cast<double, RawObject*>(FP[rD]); | |
| 1981 FP[rA] = bit_cast<RawObject*, double>(floor(value)); | |
| 1982 DISPATCH(); | |
| 1983 } | |
| 1984 | |
| 1985 { | |
| 1986 BYTECODE(DCeil, A_D); | |
| 1987 const double value = bit_cast<double, RawObject*>(FP[rD]); | |
| 1988 FP[rA] = bit_cast<RawObject*, double>(ceil(value)); | |
| 1989 DISPATCH(); | |
| 1990 } | |
| 1991 | |
| 1992 { | |
| 1993 BYTECODE(DoubleToFloat, A_D); | |
| 1994 const double value = bit_cast<double, RawObject*>(FP[rD]); | |
| 1995 const float valuef = static_cast<float>(value); | |
| 1996 *reinterpret_cast<float*>(&FP[rA]) = valuef; | |
| 1997 DISPATCH(); | |
| 1998 } | |
| 1999 | |
| 2000 { | |
| 2001 BYTECODE(FloatToDouble, A_D); | |
| 2002 const float valuef = *reinterpret_cast<float*>(&FP[rD]); | |
| 2003 const double value = static_cast<double>(valuef); | |
| 2004 FP[rA] = bit_cast<RawObject*, double>(value); | |
| 2005 DISPATCH(); | |
| 2006 } | |
| 2007 | |
| 2008 { | |
| 2009 BYTECODE(LoadIndexedFloat32, A_B_C); | |
| 2010 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC]); | |
| 2011 const uint32_t value = *reinterpret_cast<uint32_t*>(data); | |
| 2012 const int64_t value64 = value; | |
|
Florian Schneider
2016/09/15 16:05:45
uint64_t?
zra
2016/09/15 16:18:21
Done.
| |
| 2013 FP[rA] = reinterpret_cast<RawObject*>(value64); | |
| 2014 DISPATCH(); | |
| 2015 } | |
| 2016 | |
| 2017 { | |
| 2018 BYTECODE(LoadIndexed4Float32, A_B_C); | |
| 2019 ASSERT(RawObject::IsTypedDataClassId(FP[rB]->GetClassId())); | |
| 2020 RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rB]); | |
| 2021 RawSmi* index = RAW_CAST(Smi, FP[rC]); | |
| 2022 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); | |
| 2023 const uint32_t value = | |
| 2024 reinterpret_cast<uint32_t*>(array->ptr()->data())[Smi::Value(index)]; | |
| 2025 const int64_t value64 = value; // sign extend to clear high bits. | |
|
Florian Schneider
2016/09/15 16:05:45
uint64_t? The upper bits of the value that holds t
zra
2016/09/15 16:18:21
Done.
| |
| 2026 FP[rA] = reinterpret_cast<RawObject*>(value64); | |
| 2027 DISPATCH(); | |
| 2028 } | |
| 2029 | |
| 2030 { | |
| 1972 BYTECODE(LoadIndexedFloat64, A_B_C); | 2031 BYTECODE(LoadIndexedFloat64, A_B_C); |
| 1973 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC], 3); | 2032 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC]); |
| 1974 *reinterpret_cast<uint64_t*>(&FP[rA]) = *reinterpret_cast<uint64_t*>(data); | 2033 const int64_t value = *reinterpret_cast<uint64_t*>(data); |
| 2034 FP[rA] = reinterpret_cast<RawObject*>(value); | |
| 1975 DISPATCH(); | 2035 DISPATCH(); |
| 1976 } | 2036 } |
| 1977 | 2037 |
| 1978 { | 2038 { |
| 1979 BYTECODE(LoadIndexed8Float64, A_B_C); | 2039 BYTECODE(LoadIndexed8Float64, A_B_C); |
| 1980 ASSERT(RawObject::IsTypedDataClassId(FP[rB]->GetClassId())); | 2040 ASSERT(RawObject::IsTypedDataClassId(FP[rB]->GetClassId())); |
| 1981 RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rB]); | 2041 RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rB]); |
| 1982 RawSmi* index = RAW_CAST(Smi, FP[rC]); | 2042 RawSmi* index = RAW_CAST(Smi, FP[rC]); |
| 1983 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); | 2043 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); |
| 1984 const int64_t value = | 2044 const int64_t value = |
| 1985 reinterpret_cast<int64_t*>(array->ptr()->data())[Smi::Value(index)]; | 2045 reinterpret_cast<int64_t*>(array->ptr()->data())[Smi::Value(index)]; |
| 1986 FP[rA] = reinterpret_cast<RawObject*>(value); | 2046 FP[rA] = reinterpret_cast<RawObject*>(value); |
| 1987 DISPATCH(); | 2047 DISPATCH(); |
| 1988 } | 2048 } |
| 1989 | 2049 |
| 1990 { | 2050 { |
| 2051 BYTECODE(StoreIndexedFloat32, A_B_C); | |
| 2052 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB]); | |
| 2053 const uint64_t value = reinterpret_cast<uint64_t>(FP[rC]); | |
| 2054 const uint32_t value32 = value; | |
| 2055 *reinterpret_cast<uint32_t*>(data) = value32; | |
| 2056 DISPATCH(); | |
| 2057 } | |
| 2058 | |
| 2059 { | |
| 2060 BYTECODE(StoreIndexed4Float32, A_B_C); | |
| 2061 ASSERT(RawObject::IsTypedDataClassId(FP[rA]->GetClassId())); | |
| 2062 RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rA]); | |
| 2063 RawSmi* index = RAW_CAST(Smi, FP[rB]); | |
| 2064 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); | |
| 2065 const uint64_t value = reinterpret_cast<uint64_t>(FP[rC]); | |
| 2066 const uint32_t value32 = value; | |
| 2067 reinterpret_cast<uint32_t*>(array->ptr()->data())[Smi::Value(index)] = | |
| 2068 value32; | |
| 2069 DISPATCH(); | |
| 2070 } | |
| 2071 | |
| 2072 { | |
| 1991 BYTECODE(StoreIndexedFloat64, A_B_C); | 2073 BYTECODE(StoreIndexedFloat64, A_B_C); |
| 1992 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB], 3); | 2074 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB]); |
| 1993 *reinterpret_cast<uint64_t*>(data) = reinterpret_cast<uint64_t>(FP[rC]); | 2075 *reinterpret_cast<uint64_t*>(data) = reinterpret_cast<uint64_t>(FP[rC]); |
| 1994 DISPATCH(); | 2076 DISPATCH(); |
| 1995 } | 2077 } |
| 1996 | 2078 |
| 1997 { | 2079 { |
| 1998 BYTECODE(StoreIndexed8Float64, A_B_C); | 2080 BYTECODE(StoreIndexed8Float64, A_B_C); |
| 1999 ASSERT(RawObject::IsTypedDataClassId(FP[rA]->GetClassId())); | 2081 ASSERT(RawObject::IsTypedDataClassId(FP[rA]->GetClassId())); |
| 2000 RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rA]); | 2082 RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rA]); |
| 2001 RawSmi* index = RAW_CAST(Smi, FP[rB]); | 2083 RawSmi* index = RAW_CAST(Smi, FP[rB]); |
| 2002 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); | 2084 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2119 DISPATCH(); | 2201 DISPATCH(); |
| 2120 } | 2202 } |
| 2121 | 2203 |
| 2122 { | 2204 { |
| 2123 BYTECODE(DMax, A_B_C); | 2205 BYTECODE(DMax, A_B_C); |
| 2124 UNREACHABLE(); | 2206 UNREACHABLE(); |
| 2125 DISPATCH(); | 2207 DISPATCH(); |
| 2126 } | 2208 } |
| 2127 | 2209 |
| 2128 { | 2210 { |
| 2211 BYTECODE(DTruncate, A_D); | |
| 2212 UNREACHABLE(); | |
| 2213 DISPATCH(); | |
| 2214 } | |
| 2215 | |
| 2216 { | |
| 2217 BYTECODE(DFloor, A_D); | |
| 2218 UNREACHABLE(); | |
| 2219 DISPATCH(); | |
| 2220 } | |
| 2221 | |
| 2222 { | |
| 2223 BYTECODE(DCeil, A_D); | |
| 2224 UNREACHABLE(); | |
| 2225 DISPATCH(); | |
| 2226 } | |
| 2227 | |
| 2228 { | |
| 2229 BYTECODE(DoubleToFloat, A_D); | |
| 2230 UNREACHABLE(); | |
| 2231 DISPATCH(); | |
| 2232 } | |
| 2233 | |
| 2234 { | |
| 2235 BYTECODE(FloatToDouble, A_D); | |
| 2236 UNREACHABLE(); | |
| 2237 DISPATCH(); | |
| 2238 } | |
| 2239 | |
| 2240 { | |
| 2241 BYTECODE(LoadIndexedFloat32, A_B_C); | |
| 2242 UNREACHABLE(); | |
| 2243 DISPATCH(); | |
| 2244 } | |
| 2245 | |
| 2246 { | |
| 2247 BYTECODE(LoadIndexed4Float32, A_B_C); | |
| 2248 UNREACHABLE(); | |
| 2249 DISPATCH(); | |
| 2250 } | |
| 2251 | |
| 2252 { | |
| 2129 BYTECODE(LoadIndexedFloat64, A_B_C); | 2253 BYTECODE(LoadIndexedFloat64, A_B_C); |
| 2130 UNREACHABLE(); | 2254 UNREACHABLE(); |
| 2131 DISPATCH(); | 2255 DISPATCH(); |
| 2132 } | 2256 } |
| 2133 | 2257 |
| 2134 { | 2258 { |
| 2135 BYTECODE(LoadIndexed8Float64, A_B_C); | 2259 BYTECODE(LoadIndexed8Float64, A_B_C); |
| 2136 UNREACHABLE(); | 2260 UNREACHABLE(); |
| 2137 DISPATCH(); | 2261 DISPATCH(); |
| 2138 } | 2262 } |
| 2139 | 2263 |
| 2140 { | 2264 { |
| 2265 BYTECODE(StoreIndexedFloat32, A_B_C); | |
| 2266 UNREACHABLE(); | |
| 2267 DISPATCH(); | |
| 2268 } | |
| 2269 | |
| 2270 { | |
| 2271 BYTECODE(StoreIndexed4Float32, A_B_C); | |
| 2272 UNREACHABLE(); | |
| 2273 DISPATCH(); | |
| 2274 } | |
| 2275 | |
| 2276 { | |
| 2141 BYTECODE(StoreIndexedFloat64, A_B_C); | 2277 BYTECODE(StoreIndexedFloat64, A_B_C); |
| 2142 UNREACHABLE(); | 2278 UNREACHABLE(); |
| 2143 DISPATCH(); | 2279 DISPATCH(); |
| 2144 } | 2280 } |
| 2145 | 2281 |
| 2146 { | 2282 { |
| 2147 BYTECODE(StoreIndexed8Float64, A_B_C); | 2283 BYTECODE(StoreIndexed8Float64, A_B_C); |
| 2148 UNREACHABLE(); | 2284 UNREACHABLE(); |
| 2149 DISPATCH(); | 2285 DISPATCH(); |
| 2150 } | 2286 } |
| (...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3036 RawArray* array = RAW_CAST(Array, FP[rA]); | 3172 RawArray* array = RAW_CAST(Array, FP[rA]); |
| 3037 RawSmi* index = RAW_CAST(Smi, FP[rB]); | 3173 RawSmi* index = RAW_CAST(Smi, FP[rB]); |
| 3038 RawObject* value = FP[rC]; | 3174 RawObject* value = FP[rC]; |
| 3039 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); | 3175 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); |
| 3040 array->StorePointer(array->ptr()->data() + Smi::Value(index), value); | 3176 array->StorePointer(array->ptr()->data() + Smi::Value(index), value); |
| 3041 DISPATCH(); | 3177 DISPATCH(); |
| 3042 } | 3178 } |
| 3043 | 3179 |
| 3044 { | 3180 { |
| 3045 BYTECODE(StoreIndexedUint8, A_B_C); | 3181 BYTECODE(StoreIndexedUint8, A_B_C); |
| 3046 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB], 0); | 3182 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB]); |
| 3047 *data = Smi::Value(RAW_CAST(Smi, FP[rC])); | 3183 *data = Smi::Value(RAW_CAST(Smi, FP[rC])); |
| 3048 DISPATCH(); | 3184 DISPATCH(); |
| 3049 } | 3185 } |
| 3050 | 3186 |
| 3051 { | 3187 { |
| 3052 BYTECODE(StoreIndexedExternalUint8, A_B_C); | 3188 BYTECODE(StoreIndexedExternalUint8, A_B_C); |
| 3053 uint8_t* array = reinterpret_cast<uint8_t*>(FP[rA]); | 3189 uint8_t* array = reinterpret_cast<uint8_t*>(FP[rA]); |
| 3054 RawSmi* index = RAW_CAST(Smi, FP[rB]); | 3190 RawSmi* index = RAW_CAST(Smi, FP[rB]); |
| 3055 RawSmi* value = RAW_CAST(Smi, FP[rC]); | 3191 RawSmi* value = RAW_CAST(Smi, FP[rC]); |
| 3056 array[Smi::Value(index)] = Smi::Value(value); | 3192 array[Smi::Value(index)] = Smi::Value(value); |
| 3057 DISPATCH(); | 3193 DISPATCH(); |
| 3058 } | 3194 } |
| 3059 | 3195 |
| 3060 { | 3196 { |
| 3061 BYTECODE(StoreIndexedOneByteString, A_B_C); | 3197 BYTECODE(StoreIndexedOneByteString, A_B_C); |
| 3062 RawOneByteString* array = RAW_CAST(OneByteString, FP[rA]); | 3198 RawOneByteString* array = RAW_CAST(OneByteString, FP[rA]); |
| 3063 RawSmi* index = RAW_CAST(Smi, FP[rB]); | 3199 RawSmi* index = RAW_CAST(Smi, FP[rB]); |
| 3064 RawSmi* value = RAW_CAST(Smi, FP[rC]); | 3200 RawSmi* value = RAW_CAST(Smi, FP[rC]); |
| 3065 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); | 3201 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); |
| 3066 array->ptr()->data()[Smi::Value(index)] = Smi::Value(value); | 3202 array->ptr()->data()[Smi::Value(index)] = Smi::Value(value); |
| 3067 DISPATCH(); | 3203 DISPATCH(); |
| 3068 } | 3204 } |
| 3069 | 3205 |
| 3070 { | 3206 { |
| 3071 BYTECODE(StoreIndexedUint32, A_B_C); | 3207 BYTECODE(StoreIndexedUint32, A_B_C); |
| 3072 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB], 2); | 3208 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB]); |
| 3073 const uintptr_t value = reinterpret_cast<uintptr_t>(FP[rC]); | 3209 const uintptr_t value = reinterpret_cast<uintptr_t>(FP[rC]); |
| 3074 *reinterpret_cast<uint32_t*>(data) = static_cast<uint32_t>(value); | 3210 *reinterpret_cast<uint32_t*>(data) = static_cast<uint32_t>(value); |
| 3075 DISPATCH(); | 3211 DISPATCH(); |
| 3076 } | 3212 } |
| 3077 | 3213 |
| 3078 { | 3214 { |
| 3079 BYTECODE(LoadIndexed, A_B_C); | 3215 BYTECODE(LoadIndexed, A_B_C); |
| 3080 RawObject* obj = FP[rB]; | 3216 RawObject* obj = FP[rB]; |
| 3081 ASSERT(obj->IsArray() || obj->IsImmutableArray()); | 3217 ASSERT(obj->IsArray() || obj->IsImmutableArray()); |
| 3082 RawArray* array = reinterpret_cast<RawArray*>(obj); | 3218 RawArray* array = reinterpret_cast<RawArray*>(obj); |
| 3083 RawSmi* index = RAW_CAST(Smi, FP[rC]); | 3219 RawSmi* index = RAW_CAST(Smi, FP[rC]); |
| 3084 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); | 3220 ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); |
| 3085 FP[rA] = array->ptr()->data()[Smi::Value(index)]; | 3221 FP[rA] = array->ptr()->data()[Smi::Value(index)]; |
| 3086 DISPATCH(); | 3222 DISPATCH(); |
| 3087 } | 3223 } |
| 3088 | 3224 |
| 3089 { | 3225 { |
| 3090 BYTECODE(LoadIndexedUint8, A_B_C); | 3226 BYTECODE(LoadIndexedUint8, A_B_C); |
| 3091 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC], 0); | 3227 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC]); |
| 3092 FP[rA] = Smi::New(*data); | 3228 FP[rA] = Smi::New(*data); |
| 3093 DISPATCH(); | 3229 DISPATCH(); |
| 3094 } | 3230 } |
| 3095 | 3231 |
| 3096 { | 3232 { |
| 3097 BYTECODE(LoadIndexedInt8, A_B_C); | 3233 BYTECODE(LoadIndexedInt8, A_B_C); |
| 3098 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC], 0); | 3234 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC]); |
| 3099 FP[rA] = Smi::New(*reinterpret_cast<int8_t*>(data)); | 3235 FP[rA] = Smi::New(*reinterpret_cast<int8_t*>(data)); |
| 3100 DISPATCH(); | 3236 DISPATCH(); |
| 3101 } | 3237 } |
| 3102 | 3238 |
| 3103 { | 3239 { |
| 3104 BYTECODE(LoadIndexedUint32, A_B_C); | 3240 BYTECODE(LoadIndexedUint32, A_B_C); |
| 3105 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC], 2); | 3241 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC]); |
| 3106 FP[rA] = reinterpret_cast<RawObject*>(*reinterpret_cast<uintptr_t*>(data)); | 3242 FP[rA] = reinterpret_cast<RawObject*>(*reinterpret_cast<uintptr_t*>(data)); |
| 3107 DISPATCH(); | 3243 DISPATCH(); |
| 3108 } | 3244 } |
| 3109 | 3245 |
| 3110 { | 3246 { |
| 3111 BYTECODE(LoadIndexedInt32, A_B_C); | 3247 BYTECODE(LoadIndexedInt32, A_B_C); |
| 3112 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC], 2); | 3248 uint8_t* data = SimulatorHelpers::GetTypedData(FP[rB], FP[rC]); |
| 3113 FP[rA] = reinterpret_cast<RawObject*>(*reinterpret_cast<intptr_t*>(data)); | 3249 FP[rA] = reinterpret_cast<RawObject*>(*reinterpret_cast<intptr_t*>(data)); |
| 3114 DISPATCH(); | 3250 DISPATCH(); |
| 3115 } | 3251 } |
| 3116 | 3252 |
| 3117 { | 3253 { |
| 3118 BYTECODE(LoadIndexedExternalUint8, A_B_C); | 3254 BYTECODE(LoadIndexedExternalUint8, A_B_C); |
| 3119 uint8_t* data = reinterpret_cast<uint8_t*>(FP[rB]); | 3255 uint8_t* data = reinterpret_cast<uint8_t*>(FP[rB]); |
| 3120 RawSmi* index = RAW_CAST(Smi, FP[rC]); | 3256 RawSmi* index = RAW_CAST(Smi, FP[rC]); |
| 3121 FP[rA] = Smi::New(data[Smi::Value(index)]); | 3257 FP[rA] = Smi::New(data[Smi::Value(index)]); |
| 3122 DISPATCH(); | 3258 DISPATCH(); |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3327 pc_ = pc; | 3463 pc_ = pc; |
| 3328 special_[kExceptionSpecialIndex] = raw_exception; | 3464 special_[kExceptionSpecialIndex] = raw_exception; |
| 3329 special_[kStacktraceSpecialIndex] = raw_stacktrace; | 3465 special_[kStacktraceSpecialIndex] = raw_stacktrace; |
| 3330 buf->Longjmp(); | 3466 buf->Longjmp(); |
| 3331 UNREACHABLE(); | 3467 UNREACHABLE(); |
| 3332 } | 3468 } |
| 3333 | 3469 |
| 3334 } // namespace dart | 3470 } // namespace dart |
| 3335 | 3471 |
| 3336 #endif // defined TARGET_ARCH_DBC | 3472 #endif // defined TARGET_ARCH_DBC |
| OLD | NEW |