| 1433 | | == [V8GenerateIsReachable](i), V8CustomIsReachable(i) == #V8GenerateIsReachable |
| 1434 | | |
| 1435 | | Summary: This generates code that allows you to set up implicit references between wrappers which can be used to keep wrappers alive during GC. |
| 1436 | | |
| 1437 | | Usage: The V8GenerateIsReachable can be specified on the interface. This attribute is ignored if CustomIsReachable is present. |
| 1438 | | |
| 1439 | | {{{ |
| 1440 | | interface [ |
| 1441 | | V8GenerateIsReachable=ImplBaseRoot |
| 1442 | | ] XXX { |
| 1443 | | }; |
| 1444 | | }}} |
| 1445 | | |
| 1446 | | The code generates a function called XXX::visitDOMWrapper which is called by V8GCController before GC. The function adds implicit references to the wrapper which keeps it alive. |
| 1447 | | |
| 1448 | | The currently valid values are: |
| 1449 | | |
| 1450 | | |ImplElementRoot|ImplOwnerRoot|ImplOwnerNodeRoot|ImplBaseRoot |
| 1451 | | |
| 1452 | | - ImplOwnerRoot |
| 1453 | | - ImplOwnerNodeRoot |
| 1454 | | - ImplElementRoot |
| 1455 | | - ImplBaseRoot |
| 1456 | | |
| 1457 | | The value of these represents the functions to call to get the object that determines whether the object is reachable or not. See CodeGeneratorV8.pm for more details. |
| 1458 | | |
| 1480 | | == `[GenerateIsReachable]`(i) == #GenerateIsReachable |
| 1481 | | |
| 1482 | | Summary: This is the shared version of `[JSGenerateIsReachable]` and `V8GenerateIsReachable`. The accepted values are the intersection of those two. |
| 1483 | | |
| 1484 | | - ImplElementRoot |
| 1485 | | - ImplBaseRoot |
| 1486 | | |
| 1487 | | == `[JSCustomHeader]`(i) == #JSCustomHeader |
| 1488 | | |
| 1489 | | Summary: `[JSCustomHeader]` allows you to write a custom header for a given interface. |
| 1490 | | |
| 1491 | | Usage: `[JSCustomHeader]` can be specified on interfaces: |
| 1492 | | {{{ |
| 1493 | | interface [ |
| 1494 | | JSCustomHeader |
| 1495 | | ] XXX { |
| 1496 | | }; |
| 1497 | | }}} |
| 1498 | | |
| 1499 | | By default, JSXXX.h and JSXXX.cpp are generated automatically. |
| 1500 | | By specifying `[Custom*]`, you can write custom bindings in WebCore/bindings/js/JSXXXCustom.cpp. |
| 1501 | | In addition, by specifying `[JSCustomHeader]`, you can write custom header in WebCore/bindings/js/JSXXXCustom.h, which will be included by JSXXX.h. |