| 508 | void *LAST_SBRK = nullptr; |
| 509 | JS::PersistentRootedObject AB; |
| 510 | static bool GetMemBuffer(JSContext *cx, unsigned argc, JS::Value *vp) { |
| 511 | if (sbrk(0) != LAST_SBRK) { |
| 512 | LAST_SBRK = sbrk(0); |
| 513 | #ifdef DEBUG |
| 514 | void *base = (void *)64; |
| 515 | #else |
| 516 | void *base = 0; |
| 517 | #endif |
| 518 | JS::RootedObject mem_buffer(cx, JS::NewArrayBufferWithUserOwnedContents( |
| 519 | cx, (size_t)LAST_SBRK, base)); |
| 520 | AB.set(mem_buffer); |
| 521 | } |
| 522 | JS::CallArgs args = JS::CallArgsFromVp(argc, vp); |
| 523 | args.rval().setObject(*AB); |
| 524 | return true; |
| 525 | } |
| 526 | |
| 527 | bool install(api::Engine *engine) { |
| 528 | Runtime.engine = engine; |