blob: 0913d1c1d9a286c3f31d5a6d4f7c56f7757f6be4 [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
49const Register InstanceOfDescriptor::LeftRegister() { return rdx; }
50const Register InstanceOfDescriptor::RightRegister() { return rax; }
51
52
53const Register StringCompareDescriptor::LeftRegister() { return rdx; }
54const Register StringCompareDescriptor::RightRegister() { return rax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000055
56
Ben Murdochb8a8cc12014-11-26 15:28:44 +000057const Register ApiGetterDescriptor::function_address() { return r8; }
58
59
60const Register MathPowTaggedDescriptor::exponent() { return rdx; }
61
62
63const Register MathPowIntegerDescriptor::exponent() {
64 return MathPowTaggedDescriptor::exponent();
65}
66
67
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000068const Register GrowArrayElementsDescriptor::ObjectRegister() { return rax; }
69const Register GrowArrayElementsDescriptor::KeyRegister() { return rbx; }
70
71
72void FastNewClosureDescriptor::InitializePlatformSpecific(
73 CallInterfaceDescriptorData* data) {
74 Register registers[] = {rbx};
75 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000076}
77
78
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000079void FastNewContextDescriptor::InitializePlatformSpecific(
80 CallInterfaceDescriptorData* data) {
81 Register registers[] = {rdi};
82 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000083}
84
Ben Murdoch097c5b22016-05-18 11:27:45 +010085void FastNewObjectDescriptor::InitializePlatformSpecific(
86 CallInterfaceDescriptorData* data) {
87 Register registers[] = {rdi, rdx};
88 data->InitializePlatformSpecific(arraysize(registers), registers);
89}
90
91void FastNewRestParameterDescriptor::InitializePlatformSpecific(
92 CallInterfaceDescriptorData* data) {
93 Register registers[] = {rdi};
94 data->InitializePlatformSpecific(arraysize(registers), registers);
95}
96
97void FastNewSloppyArgumentsDescriptor::InitializePlatformSpecific(
98 CallInterfaceDescriptorData* data) {
99 Register registers[] = {rdi};
100 data->InitializePlatformSpecific(arraysize(registers), registers);
101}
102
103void FastNewStrictArgumentsDescriptor::InitializePlatformSpecific(
104 CallInterfaceDescriptorData* data) {
105 Register registers[] = {rdi};
106 data->InitializePlatformSpecific(arraysize(registers), registers);
107}
108
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000109
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000110void TypeofDescriptor::InitializePlatformSpecific(
111 CallInterfaceDescriptorData* data) {
112 Register registers[] = {rbx};
113 data->InitializePlatformSpecific(arraysize(registers), registers);
114}
115
116
117void ToNumberDescriptor::InitializePlatformSpecific(
118 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000119 // ToNumberStub invokes a function, and therefore needs a context.
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000120 Register registers[] = {rax};
121 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000122}
123
124
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000125// static
126const Register ToLengthDescriptor::ReceiverRegister() { return rax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000127
128
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000129// static
130const Register ToStringDescriptor::ReceiverRegister() { return rax; }
131
132
133// static
Ben Murdoch097c5b22016-05-18 11:27:45 +0100134const Register ToNameDescriptor::ReceiverRegister() { return rax; }
135
136
137// static
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000138const Register ToObjectDescriptor::ReceiverRegister() { return rax; }
139
140
141void NumberToStringDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000142 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000143 Register registers[] = {rax};
144 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000145}
146
147
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000148void FastCloneRegExpDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000149 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000150 Register registers[] = {rdi, rax, rcx, rdx};
151 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000152}
153
154
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000155void FastCloneShallowArrayDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000156 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000157 Register registers[] = {rax, rbx, rcx};
158 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000159}
160
161
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000162void FastCloneShallowObjectDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000163 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000164 Register registers[] = {rax, rbx, rcx, rdx};
165 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000166}
167
168
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000169void CreateAllocationSiteDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000170 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000171 Register registers[] = {rbx, rdx};
172 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000173}
174
175
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000176void CreateWeakCellDescriptor::InitializePlatformSpecific(
177 CallInterfaceDescriptorData* data) {
178 Register registers[] = {rbx, rdx, rdi};
179 data->InitializePlatformSpecific(arraysize(registers), registers);
180}
181
182
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000183void CallFunctionDescriptor::InitializePlatformSpecific(
184 CallInterfaceDescriptorData* data) {
185 Register registers[] = {rdi};
186 data->InitializePlatformSpecific(arraysize(registers), registers);
187}
188
189
190void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific(
191 CallInterfaceDescriptorData* data) {
192 Register registers[] = {rdi, rdx};
193 data->InitializePlatformSpecific(arraysize(registers), registers);
194}
195
196
197void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific(
198 CallInterfaceDescriptorData* data) {
199 Register registers[] = {rdi, rdx, rbx};
200 data->InitializePlatformSpecific(arraysize(registers), registers);
201}
202
203
204void CallConstructDescriptor::InitializePlatformSpecific(
205 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000206 // rax : number of arguments
207 // rbx : feedback vector
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000208 // rdx : slot in feedback vector (Smi, for RecordCallTarget)
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000209 // rdi : constructor function
210 // TODO(turbofan): So far we don't gather type feedback and hence skip the
211 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000212 Register registers[] = {rax, rdi, rbx};
213 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000214}
215
216
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000217void CallTrampolineDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000218 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000219 // rax : number of arguments
220 // rdi : the target to call
221 Register registers[] = {rdi, rax};
222 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000223}
224
225
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000226void ConstructStubDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000227 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000228 // rax : number of arguments
229 // rdx : the new target
230 // rdi : the target to call
231 // rbx : allocation site or undefined
232 Register registers[] = {rdi, rdx, rax, rbx};
233 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000234}
235
236
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000237void ConstructTrampolineDescriptor::InitializePlatformSpecific(
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400238 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000239 // rax : number of arguments
240 // rdx : the new target
241 // rdi : the target to call
242 Register registers[] = {rdi, rdx, rax};
243 data->InitializePlatformSpecific(arraysize(registers), registers);
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400244}
245
246
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000247void RegExpConstructResultDescriptor::InitializePlatformSpecific(
248 CallInterfaceDescriptorData* data) {
249 Register registers[] = {rcx, rbx, rax};
250 data->InitializePlatformSpecific(arraysize(registers), registers);
251}
252
253
254void TransitionElementsKindDescriptor::InitializePlatformSpecific(
255 CallInterfaceDescriptorData* data) {
256 Register registers[] = {rax, rbx};
257 data->InitializePlatformSpecific(arraysize(registers), registers);
258}
259
260
261void AllocateHeapNumberDescriptor::InitializePlatformSpecific(
262 CallInterfaceDescriptorData* data) {
263 data->InitializePlatformSpecific(0, nullptr, nullptr);
264}
265
266
267void AllocateInNewSpaceDescriptor::InitializePlatformSpecific(
268 CallInterfaceDescriptorData* data) {
269 Register registers[] = {rax};
270 data->InitializePlatformSpecific(arraysize(registers), registers);
271}
272
273
274void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000275 CallInterfaceDescriptorData* data) {
276 // register state
277 // rax -- number of arguments
278 // rdi -- function
279 // rbx -- allocation site with elements kind
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000280 Register registers[] = {rdi, rbx};
281 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000282}
283
284
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000285void ArrayConstructorDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000286 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000287 // stack param count needs (constructor pointer, and single argument)
288 Register registers[] = {rdi, rbx, rax};
289 data->InitializePlatformSpecific(arraysize(registers), registers);
290}
291
292
293void InternalArrayConstructorConstantArgCountDescriptor::
294 InitializePlatformSpecific(CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000295 // register state
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000296 // rax -- number of arguments
297 // rdi -- constructor function
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000298 Register registers[] = {rdi};
299 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000300}
301
302
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000303void InternalArrayConstructorDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000304 CallInterfaceDescriptorData* data) {
305 // stack param count needs (constructor pointer, and single argument)
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000306 Register registers[] = {rdi, rax};
307 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000308}
309
310
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000311void CompareDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000312 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000313 Register registers[] = {rdx, rax};
314 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000315}
316
317
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000318void CompareNilDescriptor::InitializePlatformSpecific(
319 CallInterfaceDescriptorData* data) {
320 Register registers[] = {rax};
321 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000322}
323
324
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000325void ToBooleanDescriptor::InitializePlatformSpecific(
326 CallInterfaceDescriptorData* data) {
327 Register registers[] = {rax};
328 data->InitializePlatformSpecific(arraysize(registers), registers);
329}
330
331
332void BinaryOpDescriptor::InitializePlatformSpecific(
333 CallInterfaceDescriptorData* data) {
334 Register registers[] = {rdx, rax};
335 data->InitializePlatformSpecific(arraysize(registers), registers);
336}
337
338
339void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific(
340 CallInterfaceDescriptorData* data) {
341 Register registers[] = {rcx, rdx, rax};
342 data->InitializePlatformSpecific(arraysize(registers), registers);
343}
344
345
346void StringAddDescriptor::InitializePlatformSpecific(
347 CallInterfaceDescriptorData* data) {
348 Register registers[] = {rdx, rax};
349 data->InitializePlatformSpecific(arraysize(registers), registers);
350}
351
352
353void KeyedDescriptor::InitializePlatformSpecific(
354 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000355 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000356 rcx, // key
357 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000358 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000359}
360
361
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000362void NamedDescriptor::InitializePlatformSpecific(
363 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000364 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000365 rcx, // name
366 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000367 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000368}
369
370
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000371void CallHandlerDescriptor::InitializePlatformSpecific(
372 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000373 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000374 rdx, // receiver
375 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000376 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000377}
378
379
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000380void ArgumentAdaptorDescriptor::InitializePlatformSpecific(
381 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000382 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000383 rdi, // JSFunction
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000384 rdx, // the new target
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000385 rax, // actual number of arguments
386 rbx, // expected number of arguments
387 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000388 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000389}
390
391
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000392void ApiFunctionDescriptor::InitializePlatformSpecific(
393 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000394 Register registers[] = {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000395 rdi, // callee
396 rbx, // call_data
397 rcx, // holder
398 rdx, // api_function_address
399 rax, // actual number of arguments
400 };
401 data->InitializePlatformSpecific(arraysize(registers), registers);
402}
403
404
405void ApiAccessorDescriptor::InitializePlatformSpecific(
406 CallInterfaceDescriptorData* data) {
407 Register registers[] = {
408 rdi, // callee
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000409 rbx, // call_data
410 rcx, // holder
411 rdx, // api_function_address
412 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000413 data->InitializePlatformSpecific(arraysize(registers), registers);
414}
415
Ben Murdoch097c5b22016-05-18 11:27:45 +0100416void InterpreterDispatchDescriptor::InitializePlatformSpecific(
417 CallInterfaceDescriptorData* data) {
418 Register registers[] = {
419 kInterpreterAccumulatorRegister, kInterpreterRegisterFileRegister,
420 kInterpreterBytecodeOffsetRegister, kInterpreterBytecodeArrayRegister,
421 kInterpreterDispatchTableRegister};
422 data->InitializePlatformSpecific(arraysize(registers), registers);
423}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000424
425void InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific(
426 CallInterfaceDescriptorData* data) {
427 Register registers[] = {
428 rax, // argument count (not including receiver)
429 rbx, // address of first argument
430 rdi // the target callable to be call
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000431 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000432 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000433}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000434
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000435void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific(
436 CallInterfaceDescriptorData* data) {
437 Register registers[] = {
438 rax, // argument count (not including receiver)
439 rdx, // new target
440 rdi, // constructor
441 rbx, // address of first argument
442 };
443 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000444}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000445
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000446void InterpreterCEntryDescriptor::InitializePlatformSpecific(
447 CallInterfaceDescriptorData* data) {
448 Register registers[] = {
449 rax, // argument count (argc)
450 r15, // address of first argument (argv)
451 rbx // the runtime function to call
452 };
453 data->InitializePlatformSpecific(arraysize(registers), registers);
454}
455
456} // namespace internal
457} // namespace v8
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000458
459#endif // V8_TARGET_ARCH_X64