| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
| 8 | 8 |
| 9 #include "src/interface-descriptors.h" | 9 #include "src/interface-descriptors.h" |
| 10 | 10 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 | 63 |
| 64 const Register MathPowIntegerDescriptor::exponent() { return x12; } | 64 const Register MathPowIntegerDescriptor::exponent() { return x12; } |
| 65 | 65 |
| 66 | 66 |
| 67 const Register GrowArrayElementsDescriptor::ObjectRegister() { return x0; } | 67 const Register GrowArrayElementsDescriptor::ObjectRegister() { return x0; } |
| 68 const Register GrowArrayElementsDescriptor::KeyRegister() { return x3; } | 68 const Register GrowArrayElementsDescriptor::KeyRegister() { return x3; } |
| 69 | 69 |
| 70 | 70 |
| 71 void FastNewClosureDescriptor::InitializePlatformSpecific( | 71 void FastNewClosureDescriptor::InitializePlatformSpecific( |
| 72 CallInterfaceDescriptorData* data) { | 72 CallInterfaceDescriptorData* data) { |
| 73 // cp: context | |
| 74 // x2: function info | 73 // x2: function info |
| 75 Register registers[] = {cp, x2}; | 74 Register registers[] = {x2}; |
| 76 data->InitializePlatformSpecific(arraysize(registers), registers); | 75 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 77 } | 76 } |
| 78 | 77 |
| 79 | 78 |
| 80 void FastNewContextDescriptor::InitializePlatformSpecific( | 79 void FastNewContextDescriptor::InitializePlatformSpecific( |
| 81 CallInterfaceDescriptorData* data) { | 80 CallInterfaceDescriptorData* data) { |
| 82 // cp: context | |
| 83 // x1: function | 81 // x1: function |
| 84 Register registers[] = {cp, x1}; | 82 Register registers[] = {x1}; |
| 85 data->InitializePlatformSpecific(arraysize(registers), registers); | 83 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 86 } | 84 } |
| 87 | 85 |
| 88 | 86 |
| 89 void ToNumberDescriptor::InitializePlatformSpecific( | 87 void ToNumberDescriptor::InitializePlatformSpecific( |
| 90 CallInterfaceDescriptorData* data) { | 88 CallInterfaceDescriptorData* data) { |
| 91 // cp: context | |
| 92 // x0: value | 89 // x0: value |
| 93 Register registers[] = {cp, x0}; | 90 Register registers[] = {x0}; |
| 94 data->InitializePlatformSpecific(arraysize(registers), registers); | 91 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 95 } | 92 } |
| 96 | 93 |
| 97 | 94 |
| 98 void NumberToStringDescriptor::InitializePlatformSpecific( | 95 void NumberToStringDescriptor::InitializePlatformSpecific( |
| 99 CallInterfaceDescriptorData* data) { | 96 CallInterfaceDescriptorData* data) { |
| 100 // cp: context | |
| 101 // x0: value | 97 // x0: value |
| 102 Register registers[] = {cp, x0}; | 98 Register registers[] = {x0}; |
| 103 data->InitializePlatformSpecific(arraysize(registers), registers); | 99 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 104 } | 100 } |
| 105 | 101 |
| 106 | 102 |
| 107 void TypeofDescriptor::InitializePlatformSpecific( | 103 void TypeofDescriptor::InitializePlatformSpecific( |
| 108 CallInterfaceDescriptorData* data) { | 104 CallInterfaceDescriptorData* data) { |
| 109 Register registers[] = {cp, x3}; | 105 Register registers[] = {x3}; |
| 110 data->InitializePlatformSpecific(arraysize(registers), registers); | 106 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 111 } | 107 } |
| 112 | 108 |
| 113 | 109 |
| 114 void FastCloneShallowArrayDescriptor::InitializePlatformSpecific( | 110 void FastCloneShallowArrayDescriptor::InitializePlatformSpecific( |
| 115 CallInterfaceDescriptorData* data) { | 111 CallInterfaceDescriptorData* data) { |
| 116 // cp: context | |
| 117 // x3: array literals array | 112 // x3: array literals array |
| 118 // x2: array literal index | 113 // x2: array literal index |
| 119 // x1: constant elements | 114 // x1: constant elements |
| 120 Register registers[] = {cp, x3, x2, x1}; | 115 Register registers[] = {x3, x2, x1}; |
| 121 data->InitializePlatformSpecific(arraysize(registers), registers); | 116 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 122 } | 117 } |
| 123 | 118 |
| 124 | 119 |
| 125 void FastCloneShallowObjectDescriptor::InitializePlatformSpecific( | 120 void FastCloneShallowObjectDescriptor::InitializePlatformSpecific( |
| 126 CallInterfaceDescriptorData* data) { | 121 CallInterfaceDescriptorData* data) { |
| 127 // cp: context | |
| 128 // x3: object literals array | 122 // x3: object literals array |
| 129 // x2: object literal index | 123 // x2: object literal index |
| 130 // x1: constant properties | 124 // x1: constant properties |
| 131 // x0: object literal flags | 125 // x0: object literal flags |
| 132 Register registers[] = {cp, x3, x2, x1, x0}; | 126 Register registers[] = {x3, x2, x1, x0}; |
| 133 data->InitializePlatformSpecific(arraysize(registers), registers); | 127 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 134 } | 128 } |
| 135 | 129 |
| 136 | 130 |
| 137 void CreateAllocationSiteDescriptor::InitializePlatformSpecific( | 131 void CreateAllocationSiteDescriptor::InitializePlatformSpecific( |
| 138 CallInterfaceDescriptorData* data) { | 132 CallInterfaceDescriptorData* data) { |
| 139 // cp: context | |
| 140 // x2: feedback vector | 133 // x2: feedback vector |
| 141 // x3: call feedback slot | 134 // x3: call feedback slot |
| 142 Register registers[] = {cp, x2, x3}; | 135 Register registers[] = {x2, x3}; |
| 143 data->InitializePlatformSpecific(arraysize(registers), registers); | 136 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 144 } | 137 } |
| 145 | 138 |
| 146 | 139 |
| 147 void CreateWeakCellDescriptor::InitializePlatformSpecific( | 140 void CreateWeakCellDescriptor::InitializePlatformSpecific( |
| 148 CallInterfaceDescriptorData* data) { | 141 CallInterfaceDescriptorData* data) { |
| 149 // cp: context | |
| 150 // x2: feedback vector | 142 // x2: feedback vector |
| 151 // x3: call feedback slot | 143 // x3: call feedback slot |
| 152 // x1: tagged value to put in the weak cell | 144 // x1: tagged value to put in the weak cell |
| 153 Register registers[] = {cp, x2, x3, x1}; | 145 Register registers[] = {x2, x3, x1}; |
| 154 data->InitializePlatformSpecific(arraysize(registers), registers); | 146 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 155 } | 147 } |
| 156 | 148 |
| 157 | 149 |
| 158 void StoreArrayLiteralElementDescriptor::InitializePlatformSpecific( | 150 void StoreArrayLiteralElementDescriptor::InitializePlatformSpecific( |
| 159 CallInterfaceDescriptorData* data) { | 151 CallInterfaceDescriptorData* data) { |
| 160 Register registers[] = {cp, x3, x0}; | 152 Register registers[] = {x3, x0}; |
| 161 data->InitializePlatformSpecific(arraysize(registers), registers); | 153 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 162 } | 154 } |
| 163 | 155 |
| 164 | 156 |
| 165 void CallFunctionDescriptor::InitializePlatformSpecific( | 157 void CallFunctionDescriptor::InitializePlatformSpecific( |
| 166 CallInterfaceDescriptorData* data) { | 158 CallInterfaceDescriptorData* data) { |
| 167 // x1 function the function to call | 159 // x1 function the function to call |
| 168 Register registers[] = {cp, x1}; | 160 Register registers[] = {x1}; |
| 169 data->InitializePlatformSpecific(arraysize(registers), registers); | 161 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 170 } | 162 } |
| 171 | 163 |
| 172 | 164 |
| 173 void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific( | 165 void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific( |
| 174 CallInterfaceDescriptorData* data) { | 166 CallInterfaceDescriptorData* data) { |
| 175 Register registers[] = {cp, x1, x3}; | 167 Register registers[] = {x1, x3}; |
| 176 data->InitializePlatformSpecific(arraysize(registers), registers); | 168 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 177 } | 169 } |
| 178 | 170 |
| 179 | 171 |
| 180 void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific( | 172 void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific( |
| 181 CallInterfaceDescriptorData* data) { | 173 CallInterfaceDescriptorData* data) { |
| 182 Register registers[] = {cp, x1, x3, x2}; | 174 Register registers[] = {x1, x3, x2}; |
| 183 data->InitializePlatformSpecific(arraysize(registers), registers); | 175 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 184 } | 176 } |
| 185 | 177 |
| 186 | 178 |
| 187 void CallConstructDescriptor::InitializePlatformSpecific( | 179 void CallConstructDescriptor::InitializePlatformSpecific( |
| 188 CallInterfaceDescriptorData* data) { | 180 CallInterfaceDescriptorData* data) { |
| 189 // x0 : number of arguments | 181 // x0 : number of arguments |
| 190 // x1 : the function to call | 182 // x1 : the function to call |
| 191 // x2 : feedback vector | 183 // x2 : feedback vector |
| 192 // x3 : slot in feedback vector (smi) (if r2 is not the megamorphic symbol) | 184 // x3 : slot in feedback vector (smi) (if r2 is not the megamorphic symbol) |
| 193 // TODO(turbofan): So far we don't gather type feedback and hence skip the | 185 // TODO(turbofan): So far we don't gather type feedback and hence skip the |
| 194 // slot parameter, but ArrayConstructStub needs the vector to be undefined. | 186 // slot parameter, but ArrayConstructStub needs the vector to be undefined. |
| 195 Register registers[] = {cp, x0, x1, x2}; | 187 Register registers[] = {x0, x1, x2}; |
| 196 data->InitializePlatformSpecific(arraysize(registers), registers); | 188 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 197 } | 189 } |
| 198 | 190 |
| 199 | 191 |
| 200 void RegExpConstructResultDescriptor::InitializePlatformSpecific( | 192 void RegExpConstructResultDescriptor::InitializePlatformSpecific( |
| 201 CallInterfaceDescriptorData* data) { | 193 CallInterfaceDescriptorData* data) { |
| 202 // cp: context | |
| 203 // x2: length | 194 // x2: length |
| 204 // x1: index (of last match) | 195 // x1: index (of last match) |
| 205 // x0: string | 196 // x0: string |
| 206 Register registers[] = {cp, x2, x1, x0}; | 197 Register registers[] = {x2, x1, x0}; |
| 207 data->InitializePlatformSpecific(arraysize(registers), registers); | 198 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 208 } | 199 } |
| 209 | 200 |
| 210 | 201 |
| 211 void TransitionElementsKindDescriptor::InitializePlatformSpecific( | 202 void TransitionElementsKindDescriptor::InitializePlatformSpecific( |
| 212 CallInterfaceDescriptorData* data) { | 203 CallInterfaceDescriptorData* data) { |
| 213 // cp: context | |
| 214 // x0: value (js_array) | 204 // x0: value (js_array) |
| 215 // x1: to_map | 205 // x1: to_map |
| 216 Register registers[] = {cp, x0, x1}; | 206 Register registers[] = {x0, x1}; |
| 217 data->InitializePlatformSpecific(arraysize(registers), registers); | 207 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 218 } | 208 } |
| 219 | 209 |
| 220 | 210 |
| 221 void AllocateHeapNumberDescriptor::InitializePlatformSpecific( | 211 void AllocateHeapNumberDescriptor::InitializePlatformSpecific( |
| 222 CallInterfaceDescriptorData* data) { | 212 CallInterfaceDescriptorData* data) { |
| 223 // cp: context | 213 data->InitializePlatformSpecific(0, nullptr, nullptr); |
| 224 Register registers[] = {cp}; | |
| 225 data->InitializePlatformSpecific(arraysize(registers), registers, nullptr); | |
| 226 } | 214 } |
| 227 | 215 |
| 228 | 216 |
| 229 void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific( | 217 void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific( |
| 230 CallInterfaceDescriptorData* data) { | 218 CallInterfaceDescriptorData* data) { |
| 231 // cp: context | |
| 232 // x1: function | 219 // x1: function |
| 233 // x2: allocation site with elements kind | 220 // x2: allocation site with elements kind |
| 234 // x0: number of arguments to the constructor function | 221 // x0: number of arguments to the constructor function |
| 235 Register registers[] = {cp, x1, x2}; | 222 Register registers[] = {x1, x2}; |
| 236 data->InitializePlatformSpecific(arraysize(registers), registers); | 223 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 237 } | 224 } |
| 238 | 225 |
| 239 | 226 |
| 240 void ArrayConstructorDescriptor::InitializePlatformSpecific( | 227 void ArrayConstructorDescriptor::InitializePlatformSpecific( |
| 241 CallInterfaceDescriptorData* data) { | 228 CallInterfaceDescriptorData* data) { |
| 242 // stack param count needs (constructor pointer, and single argument) | 229 // stack param count needs (constructor pointer, and single argument) |
| 243 Register registers[] = {cp, x1, x2, x0}; | 230 Register registers[] = {x1, x2, x0}; |
| 244 data->InitializePlatformSpecific(arraysize(registers), registers); | 231 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 245 } | 232 } |
| 246 | 233 |
| 247 | 234 |
| 248 void InternalArrayConstructorConstantArgCountDescriptor:: | 235 void InternalArrayConstructorConstantArgCountDescriptor:: |
| 249 InitializePlatformSpecific(CallInterfaceDescriptorData* data) { | 236 InitializePlatformSpecific(CallInterfaceDescriptorData* data) { |
| 250 // cp: context | |
| 251 // x1: constructor function | 237 // x1: constructor function |
| 252 // x0: number of arguments to the constructor function | 238 // x0: number of arguments to the constructor function |
| 253 Register registers[] = {cp, x1}; | 239 Register registers[] = {x1}; |
| 254 data->InitializePlatformSpecific(arraysize(registers), registers); | 240 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 255 } | 241 } |
| 256 | 242 |
| 257 | 243 |
| 258 void InternalArrayConstructorDescriptor::InitializePlatformSpecific( | 244 void InternalArrayConstructorDescriptor::InitializePlatformSpecific( |
| 259 CallInterfaceDescriptorData* data) { | 245 CallInterfaceDescriptorData* data) { |
| 260 // stack param count needs (constructor pointer, and single argument) | 246 // stack param count needs (constructor pointer, and single argument) |
| 261 Register registers[] = {cp, x1, x0}; | 247 Register registers[] = {x1, x0}; |
| 262 data->InitializePlatformSpecific(arraysize(registers), registers); | 248 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 263 } | 249 } |
| 264 | 250 |
| 265 | 251 |
| 266 void CompareDescriptor::InitializePlatformSpecific( | 252 void CompareDescriptor::InitializePlatformSpecific( |
| 267 CallInterfaceDescriptorData* data) { | 253 CallInterfaceDescriptorData* data) { |
| 268 // cp: context | |
| 269 // x1: left operand | 254 // x1: left operand |
| 270 // x0: right operand | 255 // x0: right operand |
| 271 Register registers[] = {cp, x1, x0}; | 256 Register registers[] = {x1, x0}; |
| 272 data->InitializePlatformSpecific(arraysize(registers), registers); | 257 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 273 } | 258 } |
| 274 | 259 |
| 275 | 260 |
| 276 void CompareNilDescriptor::InitializePlatformSpecific( | 261 void CompareNilDescriptor::InitializePlatformSpecific( |
| 277 CallInterfaceDescriptorData* data) { | 262 CallInterfaceDescriptorData* data) { |
| 278 // cp: context | |
| 279 // x0: value to compare | 263 // x0: value to compare |
| 280 Register registers[] = {cp, x0}; | 264 Register registers[] = {x0}; |
| 281 data->InitializePlatformSpecific(arraysize(registers), registers); | 265 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 282 } | 266 } |
| 283 | 267 |
| 284 | 268 |
| 285 void ToBooleanDescriptor::InitializePlatformSpecific( | 269 void ToBooleanDescriptor::InitializePlatformSpecific( |
| 286 CallInterfaceDescriptorData* data) { | 270 CallInterfaceDescriptorData* data) { |
| 287 // cp: context | |
| 288 // x0: value | 271 // x0: value |
| 289 Register registers[] = {cp, x0}; | 272 Register registers[] = {x0}; |
| 290 data->InitializePlatformSpecific(arraysize(registers), registers); | 273 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 291 } | 274 } |
| 292 | 275 |
| 293 | 276 |
| 294 void BinaryOpDescriptor::InitializePlatformSpecific( | 277 void BinaryOpDescriptor::InitializePlatformSpecific( |
| 295 CallInterfaceDescriptorData* data) { | 278 CallInterfaceDescriptorData* data) { |
| 296 // cp: context | |
| 297 // x1: left operand | 279 // x1: left operand |
| 298 // x0: right operand | 280 // x0: right operand |
| 299 Register registers[] = {cp, x1, x0}; | 281 Register registers[] = {x1, x0}; |
| 300 data->InitializePlatformSpecific(arraysize(registers), registers); | 282 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 301 } | 283 } |
| 302 | 284 |
| 303 | 285 |
| 304 void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific( | 286 void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific( |
| 305 CallInterfaceDescriptorData* data) { | 287 CallInterfaceDescriptorData* data) { |
| 306 // cp: context | |
| 307 // x2: allocation site | 288 // x2: allocation site |
| 308 // x1: left operand | 289 // x1: left operand |
| 309 // x0: right operand | 290 // x0: right operand |
| 310 Register registers[] = {cp, x2, x1, x0}; | 291 Register registers[] = {x2, x1, x0}; |
| 311 data->InitializePlatformSpecific(arraysize(registers), registers); | 292 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 312 } | 293 } |
| 313 | 294 |
| 314 | 295 |
| 315 void StringAddDescriptor::InitializePlatformSpecific( | 296 void StringAddDescriptor::InitializePlatformSpecific( |
| 316 CallInterfaceDescriptorData* data) { | 297 CallInterfaceDescriptorData* data) { |
| 317 // cp: context | |
| 318 // x1: left operand | 298 // x1: left operand |
| 319 // x0: right operand | 299 // x0: right operand |
| 320 Register registers[] = {cp, x1, x0}; | 300 Register registers[] = {x1, x0}; |
| 321 data->InitializePlatformSpecific(arraysize(registers), registers); | 301 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 322 } | 302 } |
| 323 | 303 |
| 324 | 304 |
| 325 void KeyedDescriptor::InitializePlatformSpecific( | 305 void KeyedDescriptor::InitializePlatformSpecific( |
| 326 CallInterfaceDescriptorData* data) { | 306 CallInterfaceDescriptorData* data) { |
| 327 static PlatformInterfaceDescriptor noInlineDescriptor = | 307 static PlatformInterfaceDescriptor noInlineDescriptor = |
| 328 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); | 308 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); |
| 329 | 309 |
| 330 Register registers[] = { | 310 Register registers[] = { |
| 331 cp, // context | |
| 332 x2, // key | 311 x2, // key |
| 333 }; | 312 }; |
| 334 data->InitializePlatformSpecific(arraysize(registers), registers, | 313 data->InitializePlatformSpecific(arraysize(registers), registers, |
| 335 &noInlineDescriptor); | 314 &noInlineDescriptor); |
| 336 } | 315 } |
| 337 | 316 |
| 338 | 317 |
| 339 void NamedDescriptor::InitializePlatformSpecific( | 318 void NamedDescriptor::InitializePlatformSpecific( |
| 340 CallInterfaceDescriptorData* data) { | 319 CallInterfaceDescriptorData* data) { |
| 341 static PlatformInterfaceDescriptor noInlineDescriptor = | 320 static PlatformInterfaceDescriptor noInlineDescriptor = |
| 342 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); | 321 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); |
| 343 | 322 |
| 344 Register registers[] = { | 323 Register registers[] = { |
| 345 cp, // context | |
| 346 x2, // name | 324 x2, // name |
| 347 }; | 325 }; |
| 348 data->InitializePlatformSpecific(arraysize(registers), registers, | 326 data->InitializePlatformSpecific(arraysize(registers), registers, |
| 349 &noInlineDescriptor); | 327 &noInlineDescriptor); |
| 350 } | 328 } |
| 351 | 329 |
| 352 | 330 |
| 353 void CallHandlerDescriptor::InitializePlatformSpecific( | 331 void CallHandlerDescriptor::InitializePlatformSpecific( |
| 354 CallInterfaceDescriptorData* data) { | 332 CallInterfaceDescriptorData* data) { |
| 355 static PlatformInterfaceDescriptor default_descriptor = | 333 static PlatformInterfaceDescriptor default_descriptor = |
| 356 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); | 334 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); |
| 357 | 335 |
| 358 Register registers[] = { | 336 Register registers[] = { |
| 359 cp, // context | |
| 360 x0, // receiver | 337 x0, // receiver |
| 361 }; | 338 }; |
| 362 data->InitializePlatformSpecific(arraysize(registers), registers, | 339 data->InitializePlatformSpecific(arraysize(registers), registers, |
| 363 &default_descriptor); | 340 &default_descriptor); |
| 364 } | 341 } |
| 365 | 342 |
| 366 | 343 |
| 367 void ArgumentAdaptorDescriptor::InitializePlatformSpecific( | 344 void ArgumentAdaptorDescriptor::InitializePlatformSpecific( |
| 368 CallInterfaceDescriptorData* data) { | 345 CallInterfaceDescriptorData* data) { |
| 369 static PlatformInterfaceDescriptor default_descriptor = | 346 static PlatformInterfaceDescriptor default_descriptor = |
| 370 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); | 347 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); |
| 371 | 348 |
| 372 Register registers[] = { | 349 Register registers[] = { |
| 373 cp, // context | |
| 374 x1, // JSFunction | 350 x1, // JSFunction |
| 375 x0, // actual number of arguments | 351 x0, // actual number of arguments |
| 376 x2, // expected number of arguments | 352 x2, // expected number of arguments |
| 377 }; | 353 }; |
| 378 data->InitializePlatformSpecific(arraysize(registers), registers, | 354 data->InitializePlatformSpecific(arraysize(registers), registers, |
| 379 &default_descriptor); | 355 &default_descriptor); |
| 380 } | 356 } |
| 381 | 357 |
| 382 | 358 |
| 383 void ApiFunctionDescriptor::InitializePlatformSpecific( | 359 void ApiFunctionDescriptor::InitializePlatformSpecific( |
| 384 CallInterfaceDescriptorData* data) { | 360 CallInterfaceDescriptorData* data) { |
| 385 static PlatformInterfaceDescriptor default_descriptor = | 361 static PlatformInterfaceDescriptor default_descriptor = |
| 386 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); | 362 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); |
| 387 | 363 |
| 388 Register registers[] = { | 364 Register registers[] = { |
| 389 cp, // context | |
| 390 x0, // callee | 365 x0, // callee |
| 391 x4, // call_data | 366 x4, // call_data |
| 392 x2, // holder | 367 x2, // holder |
| 393 x1, // api_function_address | 368 x1, // api_function_address |
| 394 x3, // actual number of arguments | 369 x3, // actual number of arguments |
| 395 }; | 370 }; |
| 396 data->InitializePlatformSpecific(arraysize(registers), registers, | 371 data->InitializePlatformSpecific(arraysize(registers), registers, |
| 397 &default_descriptor); | 372 &default_descriptor); |
| 398 } | 373 } |
| 399 | 374 |
| 400 | 375 |
| 401 void ApiAccessorDescriptor::InitializePlatformSpecific( | 376 void ApiAccessorDescriptor::InitializePlatformSpecific( |
| 402 CallInterfaceDescriptorData* data) { | 377 CallInterfaceDescriptorData* data) { |
| 403 static PlatformInterfaceDescriptor default_descriptor = | 378 static PlatformInterfaceDescriptor default_descriptor = |
| 404 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); | 379 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); |
| 405 | 380 |
| 406 Register registers[] = { | 381 Register registers[] = { |
| 407 cp, // context | |
| 408 x0, // callee | 382 x0, // callee |
| 409 x4, // call_data | 383 x4, // call_data |
| 410 x2, // holder | 384 x2, // holder |
| 411 x1, // api_function_address | 385 x1, // api_function_address |
| 412 }; | 386 }; |
| 413 data->InitializePlatformSpecific(arraysize(registers), registers, | 387 data->InitializePlatformSpecific(arraysize(registers), registers, |
| 414 &default_descriptor); | 388 &default_descriptor); |
| 415 } | 389 } |
| 416 | 390 |
| 417 | 391 |
| 418 void MathRoundVariantDescriptor::InitializePlatformSpecific( | 392 void MathRoundVariantDescriptor::InitializePlatformSpecific( |
| 419 CallInterfaceDescriptorData* data) { | 393 CallInterfaceDescriptorData* data) { |
| 420 Register registers[] = { | 394 Register registers[] = { |
| 421 cp, // context | |
| 422 x1, // math rounding function | 395 x1, // math rounding function |
| 423 x3, // vector slot id | 396 x3, // vector slot id |
| 424 }; | 397 }; |
| 425 data->InitializePlatformSpecific(arraysize(registers), registers); | 398 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 426 } | 399 } |
| 427 } // namespace internal | 400 } // namespace internal |
| 428 } // namespace v8 | 401 } // namespace v8 |
| 429 | 402 |
| 430 #endif // V8_TARGET_ARCH_ARM64 | 403 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |