OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium 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 "bindings/core/v8/ScriptValueSerializer.h" | 5 #include "bindings/core/v8/ScriptValueSerializer.h" |
6 | 6 |
7 #include "bindings/core/v8/Transferables.h" | 7 #include "bindings/core/v8/Transferables.h" |
8 #include "bindings/core/v8/V8ArrayBuffer.h" | 8 #include "bindings/core/v8/V8ArrayBuffer.h" |
9 #include "bindings/core/v8/V8ArrayBufferView.h" | 9 #include "bindings/core/v8/V8ArrayBufferView.h" |
10 #include "bindings/core/v8/V8Blob.h" | 10 #include "bindings/core/v8/V8Blob.h" |
(...skipping 1231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1242 long long size = -1; | 1242 long long size = -1; |
1243 double lastModifiedMS = invalidFileTime(); | 1243 double lastModifiedMS = invalidFileTime(); |
1244 file->captureSnapshot(size, lastModifiedMS); | 1244 file->captureSnapshot(size, lastModifiedMS); |
1245 *index = m_blobInfo->size(); | 1245 *index = m_blobInfo->size(); |
1246 // FIXME: transition WebBlobInfo.lastModified to be milliseconds-based also. | 1246 // FIXME: transition WebBlobInfo.lastModified to be milliseconds-based also. |
1247 double lastModified = lastModifiedMS / msPerSecond; | 1247 double lastModified = lastModifiedMS / msPerSecond; |
1248 m_blobInfo->append(WebBlobInfo(file->uuid(), file->path(), file->name(), fil
e->type(), lastModified, size)); | 1248 m_blobInfo->append(WebBlobInfo(file->uuid(), file->path(), file->name(), fil
e->type(), lastModified, size)); |
1249 return true; | 1249 return true; |
1250 } | 1250 } |
1251 | 1251 |
1252 bool SerializedScriptValueReader::read(v8::Local<v8::Value>* value, ScriptValueC
ompositeCreator& creator) | 1252 bool SerializedScriptValueReader::read(v8::Local<v8::Value>* value, ScriptValueD
eserializer& deserializer) |
1253 { | 1253 { |
1254 SerializationTag tag; | 1254 SerializationTag tag; |
1255 if (!readTag(&tag)) | 1255 if (!readTag(&tag)) |
1256 return false; | 1256 return false; |
1257 return readWithTag(tag, value, creator); | 1257 return readWithTag(tag, value, deserializer); |
1258 } | 1258 } |
1259 | 1259 |
1260 bool SerializedScriptValueReader::readWithTag(SerializationTag tag, v8::Local<v8
::Value>* value, ScriptValueCompositeCreator& creator) | 1260 bool SerializedScriptValueReader::readWithTag(SerializationTag tag, v8::Local<v8
::Value>* value, ScriptValueDeserializer& deserializer) |
1261 { | 1261 { |
1262 switch (tag) { | 1262 switch (tag) { |
1263 case ReferenceCountTag: { | 1263 case ReferenceCountTag: { |
1264 if (!m_version) | 1264 if (!m_version) |
1265 return false; | 1265 return false; |
1266 uint32_t referenceTableSize; | 1266 uint32_t referenceTableSize; |
1267 if (!doReadUint32(&referenceTableSize)) | 1267 if (!doReadUint32(&referenceTableSize)) |
1268 return false; | 1268 return false; |
1269 // If this test fails, then the serializer and deserializer disagree abo
ut the assignment | 1269 // If this test fails, then the serializer and deserializer disagree abo
ut the assignment |
1270 // of object reference IDs. On the deserialization side, this means ther
e are too many or too few | 1270 // of object reference IDs. On the deserialization side, this means ther
e are too many or too few |
1271 // calls to pushObjectReference. | 1271 // calls to pushObjectReference. |
1272 if (referenceTableSize != creator.objectReferenceCount()) | 1272 if (referenceTableSize != deserializer.objectReferenceCount()) |
1273 return false; | 1273 return false; |
1274 return true; | 1274 return true; |
1275 } | 1275 } |
1276 case InvalidTag: | 1276 case InvalidTag: |
1277 return false; | 1277 return false; |
1278 case PaddingTag: | 1278 case PaddingTag: |
1279 return true; | 1279 return true; |
1280 case UndefinedTag: | 1280 case UndefinedTag: |
1281 *value = v8::Undefined(isolate()); | 1281 *value = v8::Undefined(isolate()); |
1282 break; | 1282 break; |
1283 case NullTag: | 1283 case NullTag: |
1284 *value = v8::Null(isolate()); | 1284 *value = v8::Null(isolate()); |
1285 break; | 1285 break; |
1286 case TrueTag: | 1286 case TrueTag: |
1287 *value = v8Boolean(true, isolate()); | 1287 *value = v8Boolean(true, isolate()); |
1288 break; | 1288 break; |
1289 case FalseTag: | 1289 case FalseTag: |
1290 *value = v8Boolean(false, isolate()); | 1290 *value = v8Boolean(false, isolate()); |
1291 break; | 1291 break; |
1292 case TrueObjectTag: | 1292 case TrueObjectTag: |
1293 *value = v8::BooleanObject::New(isolate(), true); | 1293 *value = v8::BooleanObject::New(isolate(), true); |
1294 creator.pushObjectReference(*value); | 1294 deserializer.pushObjectReference(*value); |
1295 break; | 1295 break; |
1296 case FalseObjectTag: | 1296 case FalseObjectTag: |
1297 *value = v8::BooleanObject::New(isolate(), false); | 1297 *value = v8::BooleanObject::New(isolate(), false); |
1298 creator.pushObjectReference(*value); | 1298 deserializer.pushObjectReference(*value); |
1299 break; | 1299 break; |
1300 case StringTag: | 1300 case StringTag: |
1301 if (!readString(value)) | 1301 if (!readString(value)) |
1302 return false; | 1302 return false; |
1303 break; | 1303 break; |
1304 case StringUCharTag: | 1304 case StringUCharTag: |
1305 if (!readUCharString(value)) | 1305 if (!readUCharString(value)) |
1306 return false; | 1306 return false; |
1307 break; | 1307 break; |
1308 case StringObjectTag: | 1308 case StringObjectTag: |
1309 if (!readStringObject(value)) | 1309 if (!readStringObject(value)) |
1310 return false; | 1310 return false; |
1311 creator.pushObjectReference(*value); | 1311 deserializer.pushObjectReference(*value); |
1312 break; | 1312 break; |
1313 case Int32Tag: | 1313 case Int32Tag: |
1314 if (!readInt32(value)) | 1314 if (!readInt32(value)) |
1315 return false; | 1315 return false; |
1316 break; | 1316 break; |
1317 case Uint32Tag: | 1317 case Uint32Tag: |
1318 if (!readUint32(value)) | 1318 if (!readUint32(value)) |
1319 return false; | 1319 return false; |
1320 break; | 1320 break; |
1321 case DateTag: | 1321 case DateTag: |
1322 if (!readDate(value)) | 1322 if (!readDate(value)) |
1323 return false; | 1323 return false; |
1324 creator.pushObjectReference(*value); | 1324 deserializer.pushObjectReference(*value); |
1325 break; | 1325 break; |
1326 case NumberTag: | 1326 case NumberTag: |
1327 if (!readNumber(value)) | 1327 if (!readNumber(value)) |
1328 return false; | 1328 return false; |
1329 break; | 1329 break; |
1330 case NumberObjectTag: | 1330 case NumberObjectTag: |
1331 if (!readNumberObject(value)) | 1331 if (!readNumberObject(value)) |
1332 return false; | 1332 return false; |
1333 creator.pushObjectReference(*value); | 1333 deserializer.pushObjectReference(*value); |
1334 break; | 1334 break; |
1335 case BlobTag: | 1335 case BlobTag: |
1336 case BlobIndexTag: | 1336 case BlobIndexTag: |
1337 if (!readBlob(value, tag == BlobIndexTag)) | 1337 if (!readBlob(value, tag == BlobIndexTag)) |
1338 return false; | 1338 return false; |
1339 creator.pushObjectReference(*value); | 1339 deserializer.pushObjectReference(*value); |
1340 break; | 1340 break; |
1341 case FileTag: | 1341 case FileTag: |
1342 case FileIndexTag: | 1342 case FileIndexTag: |
1343 if (!readFile(value, tag == FileIndexTag)) | 1343 if (!readFile(value, tag == FileIndexTag)) |
1344 return false; | 1344 return false; |
1345 creator.pushObjectReference(*value); | 1345 deserializer.pushObjectReference(*value); |
1346 break; | 1346 break; |
1347 case FileListTag: | 1347 case FileListTag: |
1348 case FileListIndexTag: | 1348 case FileListIndexTag: |
1349 if (!readFileList(value, tag == FileListIndexTag)) | 1349 if (!readFileList(value, tag == FileListIndexTag)) |
1350 return false; | 1350 return false; |
1351 creator.pushObjectReference(*value); | 1351 deserializer.pushObjectReference(*value); |
1352 break; | 1352 break; |
1353 case CompositorProxyTag: | 1353 case CompositorProxyTag: |
1354 if (!readCompositorProxy(value)) | 1354 if (!readCompositorProxy(value)) |
1355 return false; | 1355 return false; |
1356 creator.pushObjectReference(*value); | 1356 deserializer.pushObjectReference(*value); |
1357 break; | 1357 break; |
1358 | 1358 |
1359 case ImageDataTag: | 1359 case ImageDataTag: |
1360 if (!readImageData(value)) | 1360 if (!readImageData(value)) |
1361 return false; | 1361 return false; |
1362 creator.pushObjectReference(*value); | 1362 deserializer.pushObjectReference(*value); |
1363 break; | 1363 break; |
1364 case ImageBitmapTag: | 1364 case ImageBitmapTag: |
1365 if (!readImageBitmap(value)) | 1365 if (!readImageBitmap(value)) |
1366 return false; | 1366 return false; |
1367 creator.pushObjectReference(*value); | 1367 deserializer.pushObjectReference(*value); |
1368 break; | 1368 break; |
1369 | 1369 |
1370 case RegExpTag: | 1370 case RegExpTag: |
1371 if (!readRegExp(value)) | 1371 if (!readRegExp(value)) |
1372 return false; | 1372 return false; |
1373 creator.pushObjectReference(*value); | 1373 deserializer.pushObjectReference(*value); |
1374 break; | 1374 break; |
1375 case ObjectTag: { | 1375 case ObjectTag: { |
1376 uint32_t numProperties; | 1376 uint32_t numProperties; |
1377 if (!doReadUint32(&numProperties)) | 1377 if (!doReadUint32(&numProperties)) |
1378 return false; | 1378 return false; |
1379 if (!creator.completeObject(numProperties, value)) | 1379 if (!deserializer.completeObject(numProperties, value)) |
1380 return false; | 1380 return false; |
1381 break; | 1381 break; |
1382 } | 1382 } |
1383 case SparseArrayTag: { | 1383 case SparseArrayTag: { |
1384 uint32_t numProperties; | 1384 uint32_t numProperties; |
1385 uint32_t length; | 1385 uint32_t length; |
1386 if (!doReadUint32(&numProperties)) | 1386 if (!doReadUint32(&numProperties)) |
1387 return false; | 1387 return false; |
1388 if (!doReadUint32(&length)) | 1388 if (!doReadUint32(&length)) |
1389 return false; | 1389 return false; |
1390 if (!creator.completeSparseArray(numProperties, length, value)) | 1390 if (!deserializer.completeSparseArray(numProperties, length, value)) |
1391 return false; | 1391 return false; |
1392 break; | 1392 break; |
1393 } | 1393 } |
1394 case DenseArrayTag: { | 1394 case DenseArrayTag: { |
1395 uint32_t numProperties; | 1395 uint32_t numProperties; |
1396 uint32_t length; | 1396 uint32_t length; |
1397 if (!doReadUint32(&numProperties)) | 1397 if (!doReadUint32(&numProperties)) |
1398 return false; | 1398 return false; |
1399 if (!doReadUint32(&length)) | 1399 if (!doReadUint32(&length)) |
1400 return false; | 1400 return false; |
1401 if (!creator.completeDenseArray(numProperties, length, value)) | 1401 if (!deserializer.completeDenseArray(numProperties, length, value)) |
1402 return false; | 1402 return false; |
1403 break; | 1403 break; |
1404 } | 1404 } |
1405 case MapTag: { | 1405 case MapTag: { |
1406 uint32_t length; | 1406 uint32_t length; |
1407 if (!doReadUint32(&length)) | 1407 if (!doReadUint32(&length)) |
1408 return false; | 1408 return false; |
1409 if (!creator.completeMap(length, value)) | 1409 if (!deserializer.completeMap(length, value)) |
1410 return false; | 1410 return false; |
1411 break; | 1411 break; |
1412 } | 1412 } |
1413 case SetTag: { | 1413 case SetTag: { |
1414 uint32_t length; | 1414 uint32_t length; |
1415 if (!doReadUint32(&length)) | 1415 if (!doReadUint32(&length)) |
1416 return false; | 1416 return false; |
1417 if (!creator.completeSet(length, value)) | 1417 if (!deserializer.completeSet(length, value)) |
1418 return false; | 1418 return false; |
1419 break; | 1419 break; |
1420 } | 1420 } |
1421 case ArrayBufferViewTag: { | 1421 case ArrayBufferViewTag: { |
1422 if (!m_version) | 1422 if (!m_version) |
1423 return false; | 1423 return false; |
1424 if (!readArrayBufferView(value, creator)) | 1424 if (!readArrayBufferView(value, deserializer)) |
1425 return false; | 1425 return false; |
1426 creator.pushObjectReference(*value); | 1426 deserializer.pushObjectReference(*value); |
1427 break; | 1427 break; |
1428 } | 1428 } |
1429 case ArrayBufferTag: { | 1429 case ArrayBufferTag: { |
1430 if (!m_version) | 1430 if (!m_version) |
1431 return false; | 1431 return false; |
1432 if (!readArrayBuffer(value)) | 1432 if (!readArrayBuffer(value)) |
1433 return false; | 1433 return false; |
1434 creator.pushObjectReference(*value); | 1434 deserializer.pushObjectReference(*value); |
1435 break; | 1435 break; |
1436 } | 1436 } |
1437 case GenerateFreshObjectTag: { | 1437 case GenerateFreshObjectTag: { |
1438 if (!m_version) | 1438 if (!m_version) |
1439 return false; | 1439 return false; |
1440 if (!creator.newObject()) | 1440 if (!deserializer.newObject()) |
1441 return false; | 1441 return false; |
1442 return true; | 1442 return true; |
1443 } | 1443 } |
1444 case GenerateFreshSparseArrayTag: { | 1444 case GenerateFreshSparseArrayTag: { |
1445 if (!m_version) | 1445 if (!m_version) |
1446 return false; | 1446 return false; |
1447 uint32_t length; | 1447 uint32_t length; |
1448 if (!doReadUint32(&length)) | 1448 if (!doReadUint32(&length)) |
1449 return false; | 1449 return false; |
1450 if (!creator.newSparseArray(length)) | 1450 if (!deserializer.newSparseArray(length)) |
1451 return false; | 1451 return false; |
1452 return true; | 1452 return true; |
1453 } | 1453 } |
1454 case GenerateFreshDenseArrayTag: { | 1454 case GenerateFreshDenseArrayTag: { |
1455 if (!m_version) | 1455 if (!m_version) |
1456 return false; | 1456 return false; |
1457 uint32_t length; | 1457 uint32_t length; |
1458 if (!doReadUint32(&length)) | 1458 if (!doReadUint32(&length)) |
1459 return false; | 1459 return false; |
1460 if (!creator.newDenseArray(length)) | 1460 if (!deserializer.newDenseArray(length)) |
1461 return false; | 1461 return false; |
1462 return true; | 1462 return true; |
1463 } | 1463 } |
1464 case GenerateFreshMapTag: { | 1464 case GenerateFreshMapTag: { |
1465 if (!m_version) | 1465 if (!m_version) |
1466 return false; | 1466 return false; |
1467 if (!creator.newMap()) | 1467 if (!deserializer.newMap()) |
1468 return false; | 1468 return false; |
1469 return true; | 1469 return true; |
1470 } | 1470 } |
1471 case GenerateFreshSetTag: { | 1471 case GenerateFreshSetTag: { |
1472 if (!m_version) | 1472 if (!m_version) |
1473 return false; | 1473 return false; |
1474 if (!creator.newSet()) | 1474 if (!deserializer.newSet()) |
1475 return false; | 1475 return false; |
1476 return true; | 1476 return true; |
1477 } | 1477 } |
1478 case MessagePortTag: { | 1478 case MessagePortTag: { |
1479 if (!m_version) | 1479 if (!m_version) |
1480 return false; | 1480 return false; |
1481 uint32_t index; | 1481 uint32_t index; |
1482 if (!doReadUint32(&index)) | 1482 if (!doReadUint32(&index)) |
1483 return false; | 1483 return false; |
1484 if (!creator.tryGetTransferredMessagePort(index, value)) | 1484 if (!deserializer.tryGetTransferredMessagePort(index, value)) |
1485 return false; | 1485 return false; |
1486 break; | 1486 break; |
1487 } | 1487 } |
1488 case ArrayBufferTransferTag: { | 1488 case ArrayBufferTransferTag: { |
1489 if (!m_version) | 1489 if (!m_version) |
1490 return false; | 1490 return false; |
1491 uint32_t index; | 1491 uint32_t index; |
1492 if (!doReadUint32(&index)) | 1492 if (!doReadUint32(&index)) |
1493 return false; | 1493 return false; |
1494 if (!creator.tryGetTransferredArrayBuffer(index, value)) | 1494 if (!deserializer.tryGetTransferredArrayBuffer(index, value)) |
1495 return false; | 1495 return false; |
1496 break; | 1496 break; |
1497 } | 1497 } |
1498 case ImageBitmapTransferTag: { | 1498 case ImageBitmapTransferTag: { |
1499 if (!m_version) | 1499 if (!m_version) |
1500 return false; | 1500 return false; |
1501 uint32_t index; | 1501 uint32_t index; |
1502 if (!doReadUint32(&index)) | 1502 if (!doReadUint32(&index)) |
1503 return false; | 1503 return false; |
1504 if (!creator.tryGetTransferredImageBitmap(index, value)) | 1504 if (!deserializer.tryGetTransferredImageBitmap(index, value)) |
1505 return false; | 1505 return false; |
1506 break; | 1506 break; |
1507 } | 1507 } |
1508 case OffscreenCanvasTransferTag: { | 1508 case OffscreenCanvasTransferTag: { |
1509 if (!m_version) | 1509 if (!m_version) |
1510 return false; | 1510 return false; |
1511 uint32_t index, width, height, id; | 1511 uint32_t index, width, height, id; |
1512 if (!doReadUint32(&index)) | 1512 if (!doReadUint32(&index)) |
1513 return false; | 1513 return false; |
1514 if (!doReadUint32(&width)) | 1514 if (!doReadUint32(&width)) |
1515 return false; | 1515 return false; |
1516 if (!doReadUint32(&height)) | 1516 if (!doReadUint32(&height)) |
1517 return false; | 1517 return false; |
1518 if (!doReadUint32(&id)) | 1518 if (!doReadUint32(&id)) |
1519 return false; | 1519 return false; |
1520 if (!creator.tryGetTransferredOffscreenCanvas(index, width, height, id,
value)) | 1520 if (!deserializer.tryGetTransferredOffscreenCanvas(index, width, height,
id, value)) |
1521 return false; | 1521 return false; |
1522 break; | 1522 break; |
1523 } | 1523 } |
1524 case SharedArrayBufferTransferTag: { | 1524 case SharedArrayBufferTransferTag: { |
1525 if (!m_version) | 1525 if (!m_version) |
1526 return false; | 1526 return false; |
1527 uint32_t index; | 1527 uint32_t index; |
1528 if (!doReadUint32(&index)) | 1528 if (!doReadUint32(&index)) |
1529 return false; | 1529 return false; |
1530 if (!creator.tryGetTransferredSharedArrayBuffer(index, value)) | 1530 if (!deserializer.tryGetTransferredSharedArrayBuffer(index, value)) |
1531 return false; | 1531 return false; |
1532 break; | 1532 break; |
1533 } | 1533 } |
1534 case ObjectReferenceTag: { | 1534 case ObjectReferenceTag: { |
1535 if (!m_version) | 1535 if (!m_version) |
1536 return false; | 1536 return false; |
1537 uint32_t reference; | 1537 uint32_t reference; |
1538 if (!doReadUint32(&reference)) | 1538 if (!doReadUint32(&reference)) |
1539 return false; | 1539 return false; |
1540 if (!creator.tryGetObjectFromObjectReference(reference, value)) | 1540 if (!deserializer.tryGetObjectFromObjectReference(reference, value)) |
1541 return false; | 1541 return false; |
1542 break; | 1542 break; |
1543 } | 1543 } |
1544 case DOMFileSystemTag: | 1544 case DOMFileSystemTag: |
1545 case CryptoKeyTag: | 1545 case CryptoKeyTag: |
1546 ASSERT_NOT_REACHED(); | 1546 ASSERT_NOT_REACHED(); |
1547 default: | 1547 default: |
1548 return false; | 1548 return false; |
1549 } | 1549 } |
1550 return !value->IsEmpty(); | 1550 return !value->IsEmpty(); |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1763 | 1763 |
1764 bool SerializedScriptValueReader::readArrayBuffer(v8::Local<v8::Value>* value) | 1764 bool SerializedScriptValueReader::readArrayBuffer(v8::Local<v8::Value>* value) |
1765 { | 1765 { |
1766 DOMArrayBuffer* arrayBuffer = doReadArrayBuffer(); | 1766 DOMArrayBuffer* arrayBuffer = doReadArrayBuffer(); |
1767 if (!arrayBuffer) | 1767 if (!arrayBuffer) |
1768 return false; | 1768 return false; |
1769 *value = toV8(arrayBuffer, m_scriptState->context()->Global(), isolate()); | 1769 *value = toV8(arrayBuffer, m_scriptState->context()->Global(), isolate()); |
1770 return !value->IsEmpty(); | 1770 return !value->IsEmpty(); |
1771 } | 1771 } |
1772 | 1772 |
1773 bool SerializedScriptValueReader::readArrayBufferView(v8::Local<v8::Value>* valu
e, ScriptValueCompositeCreator& creator) | 1773 bool SerializedScriptValueReader::readArrayBufferView(v8::Local<v8::Value>* valu
e, ScriptValueDeserializer& deserializer) |
1774 { | 1774 { |
1775 ArrayBufferViewSubTag subTag; | 1775 ArrayBufferViewSubTag subTag; |
1776 uint32_t byteOffset; | 1776 uint32_t byteOffset; |
1777 uint32_t byteLength; | 1777 uint32_t byteLength; |
1778 DOMArrayBufferBase* arrayBuffer = nullptr; | 1778 DOMArrayBufferBase* arrayBuffer = nullptr; |
1779 v8::Local<v8::Value> arrayBufferV8Value; | 1779 v8::Local<v8::Value> arrayBufferV8Value; |
1780 if (!readArrayBufferViewSubTag(&subTag)) | 1780 if (!readArrayBufferViewSubTag(&subTag)) |
1781 return false; | 1781 return false; |
1782 if (!doReadUint32(&byteOffset)) | 1782 if (!doReadUint32(&byteOffset)) |
1783 return false; | 1783 return false; |
1784 if (!doReadUint32(&byteLength)) | 1784 if (!doReadUint32(&byteLength)) |
1785 return false; | 1785 return false; |
1786 if (!creator.consumeTopOfStack(&arrayBufferV8Value)) | 1786 if (!deserializer.consumeTopOfStack(&arrayBufferV8Value)) |
1787 return false; | 1787 return false; |
1788 if (arrayBufferV8Value.IsEmpty()) | 1788 if (arrayBufferV8Value.IsEmpty()) |
1789 return false; | 1789 return false; |
1790 if (arrayBufferV8Value->IsArrayBuffer()) { | 1790 if (arrayBufferV8Value->IsArrayBuffer()) { |
1791 arrayBuffer = V8ArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Object>())
; | 1791 arrayBuffer = V8ArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Object>())
; |
1792 if (!arrayBuffer) | 1792 if (!arrayBuffer) |
1793 return false; | 1793 return false; |
1794 } else if (arrayBufferV8Value->IsSharedArrayBuffer()) { | 1794 } else if (arrayBufferV8Value->IsSharedArrayBuffer()) { |
1795 arrayBuffer = V8SharedArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Obje
ct>()); | 1795 arrayBuffer = V8SharedArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Obje
ct>()); |
1796 if (!arrayBuffer) | 1796 if (!arrayBuffer) |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2380 return false; | 2380 return false; |
2381 uint32_t objectReference = m_openCompositeReferenceStack[m_openCompositeRefe
renceStack.size() - 1]; | 2381 uint32_t objectReference = m_openCompositeReferenceStack[m_openCompositeRefe
renceStack.size() - 1]; |
2382 m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() -
1); | 2382 m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() -
1); |
2383 if (objectReference >= m_objectPool.size()) | 2383 if (objectReference >= m_objectPool.size()) |
2384 return false; | 2384 return false; |
2385 *object = m_objectPool[objectReference]; | 2385 *object = m_objectPool[objectReference]; |
2386 return true; | 2386 return true; |
2387 } | 2387 } |
2388 | 2388 |
2389 } // namespace blink | 2389 } // namespace blink |
OLD | NEW |