blob: e1e7f9cb4669ed573e6be226cfad7c9c8df2af58 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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
3// found in the LICENSE file.
4
Ben Murdochb8a8cc12014-11-26 15:28:44 +00005#if V8_TARGET_ARCH_X64
6
7#include "src/interface-descriptors.h"
8
9namespace v8 {
10namespace internal {
11
12const Register CallInterfaceDescriptor::ContextRegister() { return rsi; }
13
14
15const Register LoadDescriptor::ReceiverRegister() { return rdx; }
16const Register LoadDescriptor::NameRegister() { return rcx; }
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000017const Register LoadDescriptor::SlotRegister() { return rax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000018
19
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000020const Register LoadWithVectorDescriptor::VectorRegister() { return rbx; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000021
22
23const Register StoreDescriptor::ReceiverRegister() { return rdx; }
24const Register StoreDescriptor::NameRegister() { return rcx; }
25const Register StoreDescriptor::ValueRegister() { return rax; }
26
27
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000028const Register VectorStoreICTrampolineDescriptor::SlotRegister() { return rdi; }
29
30
31const Register VectorStoreICDescriptor::VectorRegister() { return rbx; }
32
33
34const Register VectorStoreTransitionDescriptor::SlotRegister() { return rdi; }
35const Register VectorStoreTransitionDescriptor::VectorRegister() { return rbx; }
36const Register VectorStoreTransitionDescriptor::MapRegister() { return r11; }
37
38
Emily Bernierd0a1eb72015-03-24 16:35:39 -040039const Register StoreTransitionDescriptor::MapRegister() { return rbx; }
40
41
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000042const Register LoadGlobalViaContextDescriptor::SlotRegister() { return rbx; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000043
44
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000045const Register StoreGlobalViaContextDescriptor::SlotRegister() { return rbx; }
46const Register StoreGlobalViaContextDescriptor::ValueRegister() { return rax; }
47
48
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000049const Register StringCompareDescriptor::LeftRegister() { return rdx; }
50const Register StringCompareDescriptor::RightRegister() { return rax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000051
Ben Murdochc5610432016-08-08 18:44:38 +010052const Register ApiGetterDescriptor::HolderRegister() { return rcx; }
53const Register ApiGetterDescriptor::CallbackRegister() { return rbx; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000054
55const Register MathPowTaggedDescriptor::exponent() { return rdx; }
56
57
58const Register MathPowIntegerDescriptor::exponent() {
59 return MathPowTaggedDescriptor::exponent();
60}
61
62
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000063const Register GrowArrayElementsDescriptor::ObjectRegister() { return rax; }
64const Register GrowArrayElementsDescriptor::KeyRegister() { return rbx; }
65
Ben Murdochc5610432016-08-08 18:44:38 +010066const Register HasPropertyDescriptor::ObjectRegister() { return rax; }
67const Register HasPropertyDescriptor::KeyRegister() { return rbx; }
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000068
69void FastNewClosureDescriptor::InitializePlatformSpecific(
70 CallInterfaceDescriptorData* data) {
71 Register registers[] = {rbx};
72 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000073}
74
75
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000076void FastNewContextDescriptor::InitializePlatformSpecific(
77 CallInterfaceDescriptorData* data) {
78 Register registers[] = {rdi};
79 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000080}
81
Ben Murdoch097c5b22016-05-18 11:27:45 +010082void FastNewObjectDescriptor::InitializePlatformSpecific(
83 CallInterfaceDescriptorData* data) {
84 Register registers[] = {rdi, rdx};
85 data->InitializePlatformSpecific(arraysize(registers), registers);
86}
87
88void FastNewRestParameterDescriptor::InitializePlatformSpecific(
89 CallInterfaceDescriptorData* data) {
90 Register registers[] = {rdi};
91 data->InitializePlatformSpecific(arraysize(registers), registers);
92}
93
94void FastNewSloppyArgumentsDescriptor::InitializePlatformSpecific(
95 CallInterfaceDescriptorData* data) {
96 Register registers[] = {rdi};
97 data->InitializePlatformSpecific(arraysize(registers), registers);
98}
99
100void FastNewStrictArgumentsDescriptor::InitializePlatformSpecific(
101 CallInterfaceDescriptorData* data) {
102 Register registers[] = {rdi};
103 data->InitializePlatformSpecific(arraysize(registers), registers);
104}
105
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000106
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000107void TypeofDescriptor::InitializePlatformSpecific(
108 CallInterfaceDescriptorData* data) {
109 Register registers[] = {rbx};
110 data->InitializePlatformSpecific(arraysize(registers), registers);
111}
112
113
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000114// static
Ben Murdochda12d292016-06-02 14:46:10 +0100115const Register TypeConversionDescriptor::ArgumentRegister() { return rax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000116
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000117void FastCloneRegExpDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000118 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000119 Register registers[] = {rdi, rax, rcx, rdx};
120 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000121}
122
123
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000124void FastCloneShallowArrayDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000125 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000126 Register registers[] = {rax, rbx, rcx};
127 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000128}
129
130
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000131void FastCloneShallowObjectDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000132 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000133 Register registers[] = {rax, rbx, rcx, rdx};
134 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000135}
136
137
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000138void CreateAllocationSiteDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000139 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000140 Register registers[] = {rbx, rdx};
141 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000142}
143
144
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000145void CreateWeakCellDescriptor::InitializePlatformSpecific(
146 CallInterfaceDescriptorData* data) {
147 Register registers[] = {rbx, rdx, rdi};
148 data->InitializePlatformSpecific(arraysize(registers), registers);
149}
150
151
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000152void CallFunctionDescriptor::InitializePlatformSpecific(
153 CallInterfaceDescriptorData* data) {
154 Register registers[] = {rdi};
155 data->InitializePlatformSpecific(arraysize(registers), registers);
156}
157
158
159void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific(
160 CallInterfaceDescriptorData* data) {
161 Register registers[] = {rdi, rdx};
162 data->InitializePlatformSpecific(arraysize(registers), registers);
163}
164
165
166void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific(
167 CallInterfaceDescriptorData* data) {
168 Register registers[] = {rdi, rdx, rbx};
169 data->InitializePlatformSpecific(arraysize(registers), registers);
170}
171
172
173void CallConstructDescriptor::InitializePlatformSpecific(
174 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000175 // rax : number of arguments
176 // rbx : feedback vector
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000177 // rdx : slot in feedback vector (Smi, for RecordCallTarget)
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000178 // rdi : constructor function
179 // TODO(turbofan): So far we don't gather type feedback and hence skip the
180 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000181 Register registers[] = {rax, rdi, rbx};
182 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000183}
184
185
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000186void CallTrampolineDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000187 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000188 // rax : number of arguments
189 // rdi : the target to call
190 Register registers[] = {rdi, rax};
191 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000192}
193
194
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000195void ConstructStubDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000196 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000197 // rax : number of arguments
198 // rdx : the new target
199 // rdi : the target to call
200 // rbx : allocation site or undefined
201 Register registers[] = {rdi, rdx, rax, rbx};
202 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000203}
204
205
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000206void ConstructTrampolineDescriptor::InitializePlatformSpecific(
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400207 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000208 // rax : number of arguments
209 // rdx : the new target
210 // rdi : the target to call
211 Register registers[] = {rdi, rdx, rax};
212 data->InitializePlatformSpecific(arraysize(registers), registers);
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400213}
214
215
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000216void RegExpConstructResultDescriptor::InitializePlatformSpecific(
217 CallInterfaceDescriptorData* data) {
218 Register registers[] = {rcx, rbx, rax};
219 data->InitializePlatformSpecific(arraysize(registers), registers);
220}
221
222
223void TransitionElementsKindDescriptor::InitializePlatformSpecific(
224 CallInterfaceDescriptorData* data) {
225 Register registers[] = {rax, rbx};
226 data->InitializePlatformSpecific(arraysize(registers), registers);
227}
228
229
230void AllocateHeapNumberDescriptor::InitializePlatformSpecific(
231 CallInterfaceDescriptorData* data) {
232 data->InitializePlatformSpecific(0, nullptr, nullptr);
233}
234
Ben Murdochda12d292016-06-02 14:46:10 +0100235#define SIMD128_ALLOC_DESC(TYPE, Type, type, lane_count, lane_type) \
236 void Allocate##Type##Descriptor::InitializePlatformSpecific( \
237 CallInterfaceDescriptorData* data) { \
238 data->InitializePlatformSpecific(0, nullptr, nullptr); \
239 }
240SIMD128_TYPES(SIMD128_ALLOC_DESC)
241#undef SIMD128_ALLOC_DESC
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000242
Ben Murdochc5610432016-08-08 18:44:38 +0100243void ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific(
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000244 CallInterfaceDescriptorData* data) {
Ben Murdochc5610432016-08-08 18:44:38 +0100245 // register state
246 // rax -- number of arguments
247 // rdi -- function
248 // rbx -- allocation site with elements kind
249 Register registers[] = {rdi, rbx, rax};
250 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000251}
252
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000253void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000254 CallInterfaceDescriptorData* data) {
255 // register state
256 // rax -- number of arguments
257 // rdi -- function
258 // rbx -- allocation site with elements kind
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000259 Register registers[] = {rdi, rbx};
260 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000261}
262
263
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000264void ArrayConstructorDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000265 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000266 // stack param count needs (constructor pointer, and single argument)
267 Register registers[] = {rdi, rbx, rax};
268 data->InitializePlatformSpecific(arraysize(registers), registers);
269}
270
271
272void InternalArrayConstructorConstantArgCountDescriptor::
273 InitializePlatformSpecific(CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000274 // register state
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000275 // rax -- number of arguments
276 // rdi -- constructor function
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000277 Register registers[] = {rdi};
278 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000279}
280
281
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000282void InternalArrayConstructorDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000283 CallInterfaceDescriptorData* data) {
284 // stack param count needs (constructor pointer, and single argument)
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000285 Register registers[] = {rdi, rax};
286 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000287}
288
Ben Murdochda12d292016-06-02 14:46:10 +0100289void FastArrayPushDescriptor::InitializePlatformSpecific(
290 CallInterfaceDescriptorData* data) {
291 // stack param count needs (arg count)
292 Register registers[] = {rax};
293 data->InitializePlatformSpecific(arraysize(registers), registers);
294}
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000295
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000296void CompareDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000297 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000298 Register registers[] = {rdx, rax};
299 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000300}
301
302
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000303void BinaryOpDescriptor::InitializePlatformSpecific(
304 CallInterfaceDescriptorData* data) {
305 Register registers[] = {rdx, rax};
306 data->InitializePlatformSpecific(arraysize(registers), registers);
307}
308
309
310void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific(
311 CallInterfaceDescriptorData* data) {
312 Register registers[] = {rcx, rdx, rax};
313 data->InitializePlatformSpecific(arraysize(registers), registers);
314}
315
Ben Murdochc5610432016-08-08 18:44:38 +0100316void CountOpDescriptor::InitializePlatformSpecific(
317 CallInterfaceDescriptorData* data) {
318 Register registers[] = {rax};
319 data->InitializePlatformSpecific(arraysize(registers), registers);
320}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000321
322void StringAddDescriptor::InitializePlatformSpecific(
323 CallInterfaceDescriptorData* data) {
324 Register registers[] = {rdx, rax};
325 data->InitializePlatformSpecific(arraysize(registers), registers);
326}
327
328
329void KeyedDescriptor::InitializePlatformSpecific(
330 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000331 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000332 rcx, // key
333 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000334 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000335}
336
337
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000338void NamedDescriptor::InitializePlatformSpecific(
339 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000340 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000341 rcx, // name
342 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000343 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000344}
345
346
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000347void CallHandlerDescriptor::InitializePlatformSpecific(
348 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000349 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000350 rdx, // receiver
351 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000352 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000353}
354
355
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000356void ArgumentAdaptorDescriptor::InitializePlatformSpecific(
357 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000358 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000359 rdi, // JSFunction
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000360 rdx, // the new target
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000361 rax, // actual number of arguments
362 rbx, // expected number of arguments
363 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000364 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000365}
366
Ben Murdochda12d292016-06-02 14:46:10 +0100367void ApiCallbackDescriptorBase::InitializePlatformSpecific(
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000368 CallInterfaceDescriptorData* data) {
369 Register registers[] = {
370 rdi, // callee
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000371 rbx, // call_data
372 rcx, // holder
373 rdx, // api_function_address
374 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000375 data->InitializePlatformSpecific(arraysize(registers), registers);
376}
377
Ben Murdoch097c5b22016-05-18 11:27:45 +0100378void InterpreterDispatchDescriptor::InitializePlatformSpecific(
379 CallInterfaceDescriptorData* data) {
380 Register registers[] = {
Ben Murdochc5610432016-08-08 18:44:38 +0100381 kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
382 kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
Ben Murdoch097c5b22016-05-18 11:27:45 +0100383 data->InitializePlatformSpecific(arraysize(registers), registers);
384}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000385
386void InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific(
387 CallInterfaceDescriptorData* data) {
388 Register registers[] = {
389 rax, // argument count (not including receiver)
390 rbx, // address of first argument
391 rdi // the target callable to be call
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000392 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000393 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000394}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000395
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000396void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific(
397 CallInterfaceDescriptorData* data) {
398 Register registers[] = {
399 rax, // argument count (not including receiver)
400 rdx, // new target
401 rdi, // constructor
402 rbx, // address of first argument
403 };
404 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000405}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000406
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000407void InterpreterCEntryDescriptor::InitializePlatformSpecific(
408 CallInterfaceDescriptorData* data) {
409 Register registers[] = {
410 rax, // argument count (argc)
411 r15, // address of first argument (argv)
412 rbx // the runtime function to call
413 };
414 data->InitializePlatformSpecific(arraysize(registers), registers);
415}
416
Ben Murdochc5610432016-08-08 18:44:38 +0100417void ResumeGeneratorDescriptor::InitializePlatformSpecific(
418 CallInterfaceDescriptorData* data) {
419 Register registers[] = {
420 rax, // the value to pass to the generator
421 rbx, // the JSGeneratorObject to resume
422 rdx // the resume mode (tagged)
423 };
424 data->InitializePlatformSpecific(arraysize(registers), registers);
425}
426
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000427} // namespace internal
428} // namespace v8
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000429
430#endif // V8_TARGET_ARCH_X64