@@ -2334,243 +2334,6 @@ impl Bindgen for FunctionBindgen<'_> {
23342334 results. push ( rsc) ;
23352335 }
23362336
2337- // Instruction::HandleLift { handle, .. } => {
2338- // let (Handle::Own(ty) | Handle::Borrow(ty)) = handle;
2339- // let resource_ty = &crate::dealias(self.resolve, *ty);
2340- // let ResourceTable { imported, data } = &self.resource_map[resource_ty];
2341-
2342- // let is_own = matches!(handle, Handle::Own(_));
2343- // let rsc = format!("rsc{}", self.tmp());
2344- // let handle = format!("handle{}", self.tmp());
2345- // uwriteln!(self.src, "var {handle} = {};", &operands[0]);
2346-
2347- // match data {
2348- // ResourceData::Host {
2349- // tid,
2350- // rid,
2351- // local_name,
2352- // dtor_name,
2353- // } => {
2354- // let tid = tid.as_u32();
2355- // let rid = rid.as_u32();
2356- // let symbol_dispose = self.intrinsic(Intrinsic::SymbolDispose);
2357- // let rsc_table_remove = self
2358- // .intrinsic(Intrinsic::Resource(ResourceIntrinsic::ResourceTableRemove));
2359- // let rsc_flag = self
2360- // .intrinsic(Intrinsic::Resource(ResourceIntrinsic::ResourceTableFlag));
2361- // let symbol_resource_handle =
2362- // self.intrinsic(Intrinsic::SymbolResourceHandle);
2363- // let empty_func =
2364- // self.intrinsic(Intrinsic::JsHelper(JsHelperIntrinsic::EmptyFunc));
2365-
2366- // match (imported, is_own) {
2367- // // Non-imported owned host resource
2368- // (_imported @ false, _owned @ true) => {
2369- // let dtor_setup_js = if let Some(dtor) = dtor_name {
2370- // // The Symbol.dispose function gets disabled on drop, so we can rely on the own handle remaining valid.
2371- // format!(
2372- // r#",
2373- // Object.defineProperty(
2374- // {rsc},
2375- // {symbol_dispose},
2376- // {{
2377- // writable: true,
2378- // value: function () {{
2379- // finalizationRegistry{tid}.unregister({rsc});
2380- // {rsc_table_remove}(handleTable{tid}, {handle});
2381- // {rsc}[{symbol_dispose}] = {empty_func};
2382- // {rsc}[{symbol_resource_handle}] = undefined;
2383- // {dtor}(handleTable{tid}[({handle} << 1) + 1] & ~{rsc_flag});
2384- // }}
2385- // }},
2386- // );
2387- // "#
2388- // )
2389- // } else {
2390- // // Set up Symbol.dispose for borrows to allow its call, even though it does nothing.
2391- // format!(
2392- // "Object.defineProperty({rsc}, {symbol_dispose}, {{ writable: true, value: {empty_func} }});"
2393- // )
2394- // };
2395-
2396- // // Sending an own handle out to JS as a return value - set up finalizer and disposal.
2397- // uwriteln!(
2398- // self.src,
2399- // r#"
2400- // var {rsc};
2401- // if (new.target === {local_name}) {{
2402- // {rsc} = this;
2403- // }} else {{
2404- // {rsc} = Object.create({local_name}.prototype);
2405- // }}
2406- // Object.defineProperty({rsc}, {symbol_resource_handle}, {{ writable: true, value: {handle} }});
2407- // finalizationRegistry{tid}.register({rsc}, {handle}, {rsc});
2408- // {dtor_setup_js}
2409- // "#
2410- // );
2411- // }
2412-
2413- // // Non-imported borrowed host resource
2414- // (_imported @ false, _owned @ false) => {
2415- // // Borrow handles of local resources have rep handles, which we carry through here.
2416- // uwriteln!(
2417- // self.src,
2418- // "Object.defineProperty({rsc}, {symbol_resource_handle}, {{ writable: true, value: {handle} }});"
2419- // );
2420- // }
2421-
2422- // // Imported owned host resource
2423- // (_imported @ true, _owned @ true) => {
2424- // let rep = format!("rep{}", self.tmp());
2425- // // Imported handles either lift as instance capture from a previous lowering,
2426- // // or we create a new JS class to represent it.
2427- // let symbol_resource_rep =
2428- // self.intrinsic(Intrinsic::SymbolResourceRep);
2429- // let symbol_resource_handle =
2430- // self.intrinsic(Intrinsic::SymbolResourceHandle);
2431-
2432- // uwriteln!(
2433- // self.src,
2434- // r#"
2435- // var {rep} = handleTable{tid}[({handle} << 1) + 1] & ~{rsc_flag};
2436- // var {rsc} = captureTable{rid}.get({rep});
2437- // if (!{rsc}) {{
2438- // {rsc} = Object.create({local_name}.prototype);
2439- // Object.defineProperty({rsc}, {symbol_resource_handle}, {{ writable: true, value: {handle} }});
2440- // Object.defineProperty({rsc}, {symbol_resource_rep}, {{ writable: true, value: {rep} }});
2441- // }} else {{
2442- // captureTable{rid}.delete({rep});
2443- // }}
2444- // // NOTE: owned lifting is a transfer to JS, so existing own handle must be dropped
2445- // {rsc_table_remove}(handleTable{tid}, {handle});
2446- // "#,
2447- // );
2448- // }
2449-
2450- // // Imported borrowed host resource
2451- // (_imported @ true, _owned @ false) => {
2452- // let rep = format!("rep{}", self.tmp());
2453- // // Imported handles either lift as instance capture from a previous lowering,
2454- // // or we create a new JS class to represent it.
2455- // let symbol_resource_rep =
2456- // self.intrinsic(Intrinsic::SymbolResourceRep);
2457- // let symbol_resource_handle =
2458- // self.intrinsic(Intrinsic::SymbolResourceHandle);
2459-
2460- // uwriteln!(
2461- // self.src,
2462- // r#"
2463- // var {rep} = handleTable{tid}[({handle} << 1) + 1] & ~{rsc_flag};
2464- // var {rsc} = captureTable{rid}.get({rep});
2465- // if (!{rsc}) {{
2466- // {rsc} = Object.create({local_name}.prototype);
2467- // Object.defineProperty({rsc}, {symbol_resource_handle}, {{ writable: true, value: {handle} }});
2468- // Object.defineProperty({rsc}, {symbol_resource_rep}, {{ writable: true, value: {rep} }});
2469- // }}
2470- // "#,
2471- // );
2472- // }
2473- // }
2474-
2475- // // Borrow handles are tracked to release after the call by CallInterface.
2476- // if !is_own {
2477- // let cur_resource_borrows = self.intrinsic(Intrinsic::Resource(
2478- // ResourceIntrinsic::CurResourceBorrows,
2479- // ));
2480- // uwriteln!(self.src, "{cur_resource_borrows}.push({rsc});");
2481- // self.clear_resource_borrows = true;
2482- // }
2483- // }
2484-
2485- // ResourceData::Guest {
2486- // resource_name,
2487- // prefix,
2488- // extra,
2489- // } => {
2490- // assert!(
2491- // extra.is_none(),
2492- // "plain resource handles do not carry extra data"
2493- // );
2494-
2495- // let symbol_resource_handle =
2496- // self.intrinsic(Intrinsic::SymbolResourceHandle);
2497- // let prefix = prefix.as_deref().unwrap_or("");
2498- // let lower_camel = resource_name.to_lower_camel_case();
2499-
2500- // match (imported, is_own) {
2501- // // Non-imported, owned guest resource
2502- // (_imported @ false, _owned @ true) => {
2503- // uwrite!(
2504- // self.src,
2505- // r#"
2506- // var {rsc} = repTable.get($resource_{prefix}rep${lower_camel}({handle})).rep;
2507- // repTable.delete({handle});
2508- // delete {rsc}[{symbol_resource_handle}];
2509- // finalizationRegistry_export${prefix}{lower_camel}.unregister({rsc});
2510- // "#
2511- // );
2512- // }
2513-
2514- // // Non-imported, borrowed guest resource
2515- // (_imported @ false, _owned @ false) => {
2516- // uwriteln!(self.src, "var {rsc} = repTable.get({handle}).rep;");
2517- // }
2518-
2519- // // Imported, owned guest resource
2520- // (_imported @ true, _owned @ true) => {
2521- // let upper_camel = resource_name.to_upper_camel_case();
2522-
2523- // uwrite!(
2524- // self.src,
2525- // r#"
2526- // var {rsc};
2527- // if (new.target === import_{prefix}{upper_camel}) {{
2528- // {rsc} = this;
2529- // }} else {{
2530- // {rsc} = Object.create(import_{prefix}{upper_camel}.prototype);
2531- // }}
2532- // Object.defineProperty({rsc}, {symbol_resource_handle}, {{ writable: true, value: {handle} }});
2533- // finalizationRegistry_import${prefix}{lower_camel}.register({rsc}, {handle}, {rsc});
2534- // "#
2535- // );
2536- // }
2537-
2538- // // Imported, borrowed guest resource
2539- // (_imported @ true, _owned @ false) => {
2540- // let upper_camel = resource_name.to_upper_camel_case();
2541-
2542- // uwrite!(
2543- // self.src,
2544- // r#"
2545- // var {rsc};
2546- // if (new.target === import_{prefix}{upper_camel}) {{
2547- // {rsc} = this;
2548- // }} else {{
2549- // {rsc} = Object.create(import_{prefix}{upper_camel}.prototype);
2550- // }}
2551- // Object.defineProperty({rsc}, {symbol_resource_handle}, {{ writable: true, value: {handle} }});
2552- // finalizationRegistry_import${prefix}{lower_camel}.register({rsc}, {handle}, {rsc});
2553- // "#
2554- // );
2555-
2556- // // TODO(fix): should this be similar to host and *not* be here, but apply no matter what?
2557- // if !is_own {
2558- // let cur_resource_borrows = self.intrinsic(Intrinsic::Resource(
2559- // ResourceIntrinsic::CurResourceBorrows,
2560- // ));
2561- // uwriteln!(
2562- // self.src,
2563- // "{cur_resource_borrows}.push({{ rsc: {rsc}, drop: $resource_import${prefix}drop${lower_camel} }});"
2564- // );
2565- // self.clear_resource_borrows = true;
2566- // }
2567- // }
2568- // }
2569- // }
2570- // }
2571-
2572- // results.push(rsc);
2573- // }
25742337 Instruction :: HandleLower { handle, name, .. } => {
25752338 let ( Handle :: Own ( ty) | Handle :: Borrow ( ty) ) = handle;
25762339 let is_own = matches ! ( handle, Handle :: Own ( _) ) ;
0 commit comments